Java(通過反射獲取方法並使用)
package com.sanmao10;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class test_method {
/**
* 反射(通過反射獲取方法並使用)
* Method
* Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String, Class...)
* 方法可以獲取類中的指定方法,呼叫invoke(Object, Object...)可以呼叫該方法,Class.getMethod("eat")
* invoke(obj) Class.getMethod("eat",int.class) invoke(obj,10)*/
public static void main(String[] args) throws Exception{
Class clazz=Class.forName("com.sanmao10.Person");
Constructor constructor=clazz.getConstructor(String.class,int.class);
Person p=(Person)constructor.newInstance("sanmao",25);
Method m=clazz.getMethod("papapa" ); //獲取papapa無參方法
m.invoke(p);
Method m1=clazz.getMethod("papapa",String.class,int.class); //獲取有參的papapa方法
m1.invoke(p,"范冰冰",20);
}
}
相關推薦
Java(通過反射獲取方法並使用)
package com.sanmao10; import java.lang.reflect.Constructor; import java.lang.reflect.Method; public class test_method { /**
java 通過反射獲取方法引數列表名稱
說明 一般情況下是使用不到用反射來獲取引數列表名稱的,只要知道引數列表的型別就可以執行某一個引數了,因為引數名稱是給開發人員用的,執行時引數名稱不起作用。 所以 JDK 本身是沒有獲取引數列表名稱的。 如果要寫框架一類的東西,比
java通過反射獲取方法的引數名,Idea/Eclipse/Maven的配置
1,在8以前的jdk版本中,我們利用反射只能獲取到引數型別,然後引數名字都是利用arg0,arg1,arg2......要想獲得引數名,得加上註解,如下:public User getUser(@Param("groupid") String groupid, @Param(
Java通過反射獲取帶引數構造方法並使用
package com.sanmao10; import java.lang.reflect.Constructor; public class test2 { /** * ###27.05_反射(通過反射獲取帶參構造方法並使用) *
java通過反射獲取私有的構造方法,及反射擦除泛型數據類型約束
code for循環 getmethod 不能 添加 class win flag ring /* * 反射獲取私有的構造方法運行 * 不推薦,破壞了程序的安全性,封裝性 * 暴力私有 */ public class ReflectDemo4 {
Java(通過反射獲取成員變數並使用)
package com.sanmao10; import java.lang.reflect.Constructor; import java.lang.reflect.Field; public class test_Field { /**
java 通過反射獲取註解
使用反射獲取某個類的註釋、方法上的註釋、屬性上的註釋。 import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; import javax.x
java 通過反射獲取泛型的型別
分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
java reflect反射獲取方法變數引數
類的成員包含變數(Field),方法(Method),構造器(Constructor) 類定義 package Reflect; public class MyTest { public int a; public static int b; public static f
通過反射獲取方法的引數名稱(JDK8以上支援)
方法的引數名,在很多時候我們是需要反射得到的。但是在java8之前,程式碼編譯為class檔案後,方法引數的型別是固定的,但引數名稱卻丟失了,這和動態語言嚴重依賴引數名稱形成了鮮明對比。(java是靜態語言,所以入參名稱叫什麼其實無所謂的)。 雖然名稱無所謂,但很多時候,我們需要此名稱來做更好的安排
java通過反射獲取List中的泛型
Field[] fields = bean.getClass().getDeclaredFields(); for(Field f : fields){ f.setAccessible(true); if(f.getType() == java.util.List
java通過反射獲取類名、屬性名稱以及@Table註解上的表名稱
import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Table; import java.lang.reflect.Field; import java.
通過反射獲取方法返回的型別
package org.entity; import java.lang.reflect.Method; import java.lang.reflect.Type; /** * 本案例演示如
java通過反射獲取物件的變數和變數值
在java中如果類的成員變數設定為私有的,一般情況下是不允許直接訪問這個變數的,但是有了反射之後,就可以直接獲取該變數的名稱和變數值 1. 訪問成員變數 (1)先定義一個使用者實體類 p
00113_通過反射獲取成員方法並使用
tor 執行指定 eth 演示 反射 println span 通過 font 1、在反射機制中,把類中的成員方法使用類Method表示; 2、通過Class類中提供的方法獲取成員方法: (1)返回獲取一個方法 public Method getMethod(Stri
Java 自定義註解&通過反射獲取類、方法、屬性上的註解
反射 JAVA中的反射是執行中的程式檢查自己和軟體執行環境的能力,它可以根據它發現的進行改變。通俗的講就是反射可以在執行時根據指定的類名獲得類的資訊。 註解的定義 註解通過 @interface 關鍵字進行定義。 /** * 自定義註解 *
java利用反射獲取某個包下的所有獲取物件屬性、方法、並例項化
首先貼上用到的jar包,當然也可以通過遞迴file.list獲取類的路徑名稱。 maven匯入jar包: <dependency> <groupId>
java中自定義註解並通過反射獲取註解屬性值
直接上程式碼,註釋中有說明: 1、定義自定義註解類(類註解和欄位註解): package com.uno.ray; import java.lang.annotation.Documented; import java.lang
java再複習——通過反射獲取到方法的引數和返回值的泛型型別
我們都知道了可以定義帶有泛型引數的方法,以及泛型返回值的方法了,那麼泛型在執行的時候已經被擦除了,我們該如何知道這個泛型到底是什麼呢?有很多情況需要知道實際泛型是什麼,Android資料庫框架以及Http框架在解析成json成實體類的時候,必然要知道是哪個類。 獲取引數的泛
通過反射獲取class文件中的構造方法,運行構造方法
對象 rgs span for instance .... urn his col /* * 通過反射獲取class文件中的構造方法,運行構造方法 * 運行構造方法,創建對象 * 1、獲取class文件對象 * 2、從class文件對象中,獲取需要