java反射庫(reflection library) 提供了一個很是豐富且精心設計的工具集, 以便編寫可以動 態操縱 Java 代碼的程序。這項功能被大量地應用於 JavaBeans 中。使用反射, Java 能夠支持 Visual Basic 用戶習慣 使用的工具,特別是在設計或運行中添加新類時, 可以快速地應用開發工具動態地查詢新添加類的能力。 html
反射的做用java
1.在運行時分析類的能力;
數組
2.在運行時查看對象;
app
3.實現通用的數組操做代碼;寧波鄞州新東方醫院
ide
4.利用 Method 對象, 這個對象很像中的函數指針。
函數
Java反射中經常使用技術工具
1.動態獲取類,例如:根據一個字符串獲取該類開發工具
String name="xxxxxxxxxxxx"; Class c1 = name.getClass();
System.out.println(c1.getName());
運行結果以下:ui
2.動態驗證類是否存在與合法性,例如:好比上面獲取的java.lang.String類名 this
String name = "java.lang.String";
Class c1 = null;
try {
c1 = Class.forName(name);
System.out.println(c1.getName());
} catch (ClassNotFoundException e) {
}
運行結果以下:
注:咱們也能夠經過c1.getSuperclass()獲取到它的父類
3.獲取類的成員
3.1.屬性
a. getDeclaredFields
b. getDeclaredField(參數類型.class,....)
3.2.方法
a.獲取全部方法
獲取方法的返回值類型
獲取方法的傳入參數類型
獲取指定的方法
"參數類型<span ui",sans-serif;color:#212529;background:="" white'="">.class,...." public Constructor[] getDeclaredConstructors獲取單個指定構造器
Test帶參數的構造器
public Test(int age , String name){ this.age = age;
his.name = name;
System.out.println("hello" + name + "i am" + age);
}
使用newInstance方法調用構造器
Class[] p = {int.class,String.class};
constructors = c4.getDeclaredConstructor(p);
constructors.newInstance(24,"HuangLinqing");
打印結果以下圖: