国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

傳智播客學(xué)習(xí)之java 反射

2024-05-06 14:12:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
此外,畢老師為我們講解了反射機(jī)制,雖然以后我們?cè)陂_(kāi)發(fā)過(guò)程中,不一定會(huì)涉及反射,但是反射確實(shí)java一種強(qiáng)大的工具,它使我們能夠創(chuàng)建靈活的代碼,這些代碼可以在運(yùn)行時(shí)裝配,無(wú)需在組件之間進(jìn)行源代表鏈接。例如在Tomcat類加載器這種機(jī)制被很多框架所使用。
一、什么是反射
反射的概念是由Smith在1982年首次提出,主要是指程序可以訪問(wèn)、檢測(cè)和修改本身狀態(tài)行為的一種能力。反射是java程序開(kāi)發(fā)語(yǔ)言的特征之一,它也允許運(yùn)行中的 Java 程序?qū)ψ陨磉M(jìn)行檢查,或者說(shuō)“自審”,并能直接操作程序的內(nèi)部屬性。
二、java反射所需要的類
1.Class類:它的實(shí)例表示正在運(yùn)行的java應(yīng)用程序中的類和接口
2.Constructor類:提供關(guān)于類的單個(gè)構(gòu)造方法的信息以及對(duì)他的訪問(wèn)權(quán)限。
3.Method類:提供有關(guān)類或接口的單獨(dú)的某個(gè)方法的信息
4.Array類:提供動(dòng)態(tài)創(chuàng)建數(shù)組或訪問(wèn)數(shù)組的靜態(tài)方法。
5.Field類:提供有關(guān)類或接口的屬性的信息,以及對(duì)他的動(dòng)態(tài)訪問(wèn)權(quán)限。
三、反射的功能
上面我們列舉了相關(guān)的類,那么具體利用這些類我們可以做一些什么事情呢?
1)獲取指定類的Class對(duì)象
方法一、通過(guò)對(duì)象.getClass.(例:Person p;Class c=p.getClass();)
方法二、通過(guò)Class類的forName方法(例:Class c=Class.forName(類名);)
方法三、通過(guò)類型名.class獲取(Class c = int.class)
2)在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象,步驟如下:
① 根據(jù)類名來(lái)創(chuàng)建出它的對(duì)象
② 返回這個(gè)新創(chuàng)建的對(duì)象
l 使用無(wú)參構(gòu)造方法,只需要用class對(duì)象的newInstance方法。
Class c=Class.forName(類名);Person p =(Person)c.newInstance;
l 使用有參的構(gòu)造方法,步驟如下:
① 獲取指定類的對(duì)象(同上)
② 通過(guò)Class對(duì)象獲取滿足指定參數(shù)的要求的構(gòu)造方法類對(duì)象
Constructor cons = c.getConstructor(String.class)
③ 調(diào)用指定Constructor對(duì)象的newInstance方法,傳入對(duì)用的參數(shù)值,創(chuàng)建出對(duì)象。
Person p =(Person)cons.newInstance(“張三”);
3)在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法,通過(guò)反射甚至可以調(diào)用到private方法
① 獲取指定類的對(duì)象(同上)
② 根據(jù)要求創(chuàng)建一個(gè)實(shí)例
③ 通過(guò)Class對(duì)象的getDeclaredMethods(根據(jù)需要可以選取不同方法)獲得Method 的實(shí)例,通過(guò)invoke方法調(diào)用方法
Method m=c.getDeclaredMethods(“setName”,String.class);
returnvalue = m.invoke(p,"zhangsan");
注意:如果是private方法,可以先調(diào)用這個(gè)方法對(duì)應(yīng)的Method對(duì)象的setAccessible(true) 來(lái)取消對(duì)本方法的安全檢查
4)在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的屬性
① 獲取指定類的對(duì)象(同上)
② 根據(jù)要求創(chuàng)建一個(gè)實(shí)例
③ 通過(guò)Class對(duì)象的getDeclaredField(根據(jù)需要可以選取不同方法)獲得Field類 的實(shí)例,通過(guò)Set方法修改制定對(duì)象的值,get獲得對(duì)象的值。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 宁陕县| 抚宁县| 囊谦县| 萨嘎县| 大名县| 抚宁县| 玉门市| 洛浦县| 闸北区| 石林| 楚雄市| 平舆县| 辽宁省| 定襄县| 宜君县| 英山县| 新河县| 灵川县| 临泽县| 定州市| 丰台区| 南靖县| 新津县| 松原市| 涡阳县| 云浮市| 双流县| 睢宁县| 巴马| 临泽县| 文山县| 中方县| 洪湖市| 丰台区| 鄢陵县| 河北区| 平阴县| 鄯善县| 吴忠市| 渭源县| 麻城市|