Java反射技術(shù)原理與用法實(shí)例分析
本文實(shí)例講述了Java反射技術(shù)原理與用法。分享給大家供大家參考,具體如下:
本文內(nèi)容: 產(chǎn)生反射技術(shù)的需求 反射技術(shù)的使用 一個(gè)小示例首發(fā)日期:2018-05-10
產(chǎn)生反射技術(shù)的需求: 項(xiàng)目完成以后,發(fā)現(xiàn)需要增加功能,并且希望增加功能并不需要停止項(xiàng)目運(yùn)行。 在希望不關(guān)停項(xiàng)目運(yùn)行的情況下,于是考慮到將功能都放到一個(gè)單獨(dú)的項(xiàng)目之外的模塊中,每一個(gè)功能實(shí)現(xiàn)都從這個(gè)模塊中獲取【實(shí)際上這個(gè)考慮應(yīng)該是項(xiàng)目開(kāi)始前就考慮,這個(gè)例子可能不是很好】。于是就有了反射的產(chǎn)生。(這種思想有點(diǎn)類似工廠模式,如果學(xué)過(guò)設(shè)計(jì)模式的話就明白為什么要做的”開(kāi)放“)一個(gè)幫助理解例子:一個(gè)網(wǎng)站有計(jì)算器功能,剛開(kāi)始他們只有加減乘除的計(jì)算,后來(lái)他們決定增加上求乘方、求根號(hào)的計(jì)算,他們通過(guò)“關(guān)停網(wǎng)站后修改源代碼“來(lái)增加上他們需要的功能。第二次,他們加上x(chóng)x功能,他們還是關(guān)停網(wǎng)站加功能。。。。后來(lái)他們發(fā)現(xiàn)應(yīng)該把這個(gè)”功能模塊“獨(dú)立出來(lái),任何功能實(shí)現(xiàn)都通過(guò)讀取這個(gè)文件來(lái)實(shí)現(xiàn),比如想要實(shí)現(xiàn)乘方功能就需要查看這個(gè)模塊中是否定義了乘方功能。另外,將它獨(dú)立出來(lái)后,它一個(gè)模塊并不影響整個(gè)板塊的功能。
【上面的例子中,其他板塊如果想要知道獨(dú)立的模塊的內(nèi)容(屬性、方法),那么就要利用到反射技術(shù),反射技術(shù)可以使程序在運(yùn)行時(shí)解析外部對(duì)象的信息。】
PS:
上面的例子有點(diǎn)像某系統(tǒng)從數(shù)據(jù)庫(kù)中讀取資料,把資料固定到代碼中顯然是一個(gè)很不明智的行為,把數(shù)據(jù)存到數(shù)據(jù)庫(kù)中,再利用SQL語(yǔ)句(類比反射技術(shù))從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)就降低了代碼之間的耦合。 如果你希望將這個(gè)模塊有一個(gè)名詞解釋的話,可以把它稱為”配置文件“,有什么功能都可以讀取配置文件來(lái)獲取。下面就是講怎么從外部的”配置文件“中讀取具有什么屬性和功能了。如果你已經(jīng)了解了 為什么需要反射,那么你可以繼續(xù)向下了,如果不了解,那么你可能需要了解更多再深入。
反射的使用: 反射技術(shù)是一種動(dòng)態(tài)語(yǔ)言的技術(shù),它可以動(dòng)態(tài)的獲取類以及類中的成員,并可以調(diào)用該類成員。獲取外部字節(jié)碼文件中的類: 對(duì)于內(nèi)部的類,獲取該類的對(duì)象時(shí)我們可以使用new










getDeclaredMethod(方法名, 參數(shù)類型列表):獲取不論public還是非public的指定名的方法【用來(lái)獲取私有的方法】
getDeclaredMethods():獲取不論public還是非public的方法
然后使用Method對(duì)象操作:
非靜態(tài)方法調(diào)用:Method對(duì)象.invoke(對(duì)象名,對(duì)象名…)
靜態(tài)方法調(diào)用:Method對(duì)象.invoke(null)

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章:
1. xml中的空格之完全解說(shuō)2. WMLScript的語(yǔ)法基礎(chǔ)3. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法4. ASP動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù)經(jīng)驗(yàn)分享5. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問(wèn)題……6. html小技巧之td,div標(biāo)簽里內(nèi)容不換行7. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯(cuò)誤頁(yè)的問(wèn)題8. XML入門(mén)的常見(jiàn)問(wèn)題(四)9. ASP中if語(yǔ)句、select 、while循環(huán)的使用方法10. ASP使用MySQL數(shù)據(jù)庫(kù)的方法
