反射(變量)

加載字節(jié)碼文件,獲取Class類對(duì)象

Class cls = Class.forName("com.qfedu.a_reflect.Person");

獲取所有用public修飾的成員變量

Field[] allPublicFields = cls.getFields();

for (Field field : allPublicFields) {

System.out.println(field);

}


獲取所有的成員變量

Field[] allFields = cls.getDeclaredFields();

for (Field field : allFields) {

System.out.println(field);

}


Field aPublicField = cls.getField("test");

System.out.println(aPublicField);

set方法

//set(Oject obj, Object value);

//第一個(gè)參數(shù): 要操作的是哪一個(gè)對(duì)象里面的成員變量

//第二個(gè)參數(shù): 需要設(shè)置的值

Person p = (Person) cls.getConstructor(int.class, String.class).

newInstance(1, "狗蛋");

aPublicField.set(p, 20);

System.out.println("44" + p.test);

System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");

Field aStaticField = cls.getField("testStatic");

System.out.println(aStaticField);

aStaticField.set(null, 20);

System.out.println(Person.testStatic);

System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");

Field aPrivateField = cls.getDeclaredField("id");

System.out.println(aPrivateField);

aPrivateField.setAccessible(true);

aPrivateField.set(p, 10);

System.out.println(p.getId());

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容