您好,登錄后才能下訂單哦!
這篇文章主要介紹關(guān)于Java反射庫的案例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
介紹
java反射庫(reflection library) 提供了一個(gè)非常豐富且精心設(shè)計(jì)的工具集, 以便編寫能夠動(dòng) 態(tài)操縱 Java 代碼的程序。這項(xiàng)功能被大量地應(yīng)用于 JavaBeans 中。使用反射, Java 可以支持 Visual Basic 用戶習(xí)慣 使用的工具,特別是在設(shè)計(jì)或運(yùn)行中添加新類時(shí), 能夠快速地應(yīng)用開發(fā)工具動(dòng)態(tài)地查詢新添加類的能力。
反射的作用
1.在運(yùn)行時(shí)分析類的能力;
2.在運(yùn)行時(shí)查看對(duì)象;
3.實(shí)現(xiàn)通用的數(shù)組操作代碼;
4.利用 Method 對(duì)象, 這個(gè)對(duì)象很像中的函數(shù)指針。
Java反射中常用技術(shù)
1.動(dòng)態(tài)獲取類,例如:根據(jù)一個(gè)字符串獲取該類
String name="xxxxxxxxxxxx";
Class c1 = name.getClass();
System.out.println(c1.getName());
運(yùn)行結(jié)果如下:
2.動(dòng)態(tài)驗(yàn)證類是否存在與合法性,例如:比如上面獲取的java.lang.String類名
String name = "java.lang.String";
Class c1 = null;
try {
c1 = Class.forName(name);
System.out.println(c1.getName());
} catch (ClassNotFoundException e) {
}
運(yùn)行結(jié)果如下:
注:我們也可以通過c1.getSuperclass()獲取到它的父類
3.獲取類的成員
3.1.屬性
a. 獲取所有成員變量
getDeclaredFields
b. 獲取特定的成員變量
getDeclaredField(參數(shù)類型.class,....)
3.2.方法
a.獲取所有方法
getDeclareMethods()
b.獲取方法的返回值類型
getReturnType()
c. 獲取方法的傳入?yún)?shù)類型
getParameterTypes();
d.獲取指定的方法
getDeclareMethod("方法名,參數(shù)類型.class,....")
3.3.構(gòu)造器
a. 獲取所有構(gòu)造器
public Constructor[] getConstructors()
public Constructor[] getDeclaredConstructors()
b.獲取單個(gè)指定構(gòu)造器
public Constructor getConstructor(Class... parameterTypes)
public Constructor getDeclaredConstructor(Class... parameterTypes)
4.調(diào)用構(gòu)造器
newInstance 方法,例如:調(diào)用Test類的構(gòu)造器
Test帶參數(shù)的構(gòu)造器
public Test(int age , String name){
this.age = age;
his.name = name;
System.out.println("hello" + name + "i am" + age);
}
使用newInstance方法調(diào)用構(gòu)造器
Class[] p = {int.class,String.class};
constructors = c4.getDeclaredConstructor(p);
constructors.newInstance(24,"HuangLinqing");
打印結(jié)果如下圖:
以上是關(guān)于Java反射庫的案例分析的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。