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










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

更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章:
1. php測試程序運行速度和頁面執行速度的代碼2. ASP中常用的22個FSO文件操作函數整理3. 三個不常見的 HTML5 實用新特性簡介4. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報錯問題分析5. ASP調用WebService轉化成JSON數據,附json.min.asp6. SharePoint Server 2019新特性介紹7. React+umi+typeScript創建項目的過程8. 無線標記語言(WML)基礎之WMLScript 基礎第1/2頁9. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執行過程解析10. php網絡安全中命令執行漏洞的產生及本質探究
