反射(方法)

加載對應(yīng)類的字節(jié)碼文件,獲取該類的Class類對象

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


獲取所有的公共的方法

Method[] allPublicMethods = cls.getMethods();

for (Method method : allPublicMethods) {

System.out.println(method);

}


//暴力反射

//能夠獲取Person里面的private方法, 并且能夠過濾掉從父類繼承而來的方法

Method[] allMethods = cls.getDeclaredMethods();

for (Method method : allMethods) {

System.out.println(method);

}

通過反射機(jī)制,執(zhí)行類中的成員方法

invoke(Object obj, Object... args);

Object obj 這是底層調(diào)用該方法的類對象

the object the underlying method is invoked from

Object... args 不定參數(shù),是執(zhí)行該放的參數(shù)列表,是Object類型

args is arguments used for method call


//向利用反射,創(chuàng)建一個當(dāng)前類的對那個

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

newInstance(1, "狗蛋");

//獲取一個指定的方法,需要的參數(shù)是方法的名字字符串和參數(shù)列表,

Method aPublicMethod = cls.getMethod("sleep", int.class);

System.out.println("49" + aPublicMethod);

aPublicMethod.invoke(p, 15);


//獲取一個靜態(tài)方法

Method aPublicStaticMethod = cls.getMethod("eat", null);

aPublicStaticMethod.invoke(null, null);

//利用暴力反射獲取一個私有化的成員方法

Method aPrivateMethod = cls.getDeclaredMethod("testPrivate", null);

aPrivateMethod.setAccessible(true);

aPrivateMethod.invoke(p, null);

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

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

  • 學(xué)習(xí)Android的同學(xué)注意了?。。W(xué)習(xí)過程中遇到什么問題或者想獲取學(xué)習(xí)資源的話,歡迎加入Android學(xué)習(xí)交流群...
    kingZXY2009閱讀 355評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 時間太短 日子太長 我曾帶著理想和慌張 在你渺遠(yuǎn)不及的身旁 我也常在碌碌無為里謬想 如果你也在我所不及的遠(yuǎn)方 我要...
    海紅豆的奇幻漂流之旅閱讀 352評論 1 1
  • 2018年的第一場雪,紛紛揚(yáng)揚(yáng),就下了! 聽說老家那邊下了很大的雪,穿靴子雪都能灌進(jìn)去,在我的記憶當(dāng)中,這么大的雪...
    北小音閱讀 471評論 0 3
  • 前段時間,村子里有個不幸的年輕女孩因心臟病而去世。談起她,無流露出惋惜的!父親卻只問了聲:“她幾歲了?”旁人說...
    美_48fb閱讀 277評論 5 1

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