什么是反射?反射機制的應用場景有哪些?


java反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。

 

靜態編譯:在編譯時確定類型,綁定對象。

動態編譯:在運行時確定類型,綁定對象。

 

反射機制的優缺點:

優點:運行期類型的判斷,動態加載類,提高代碼靈活度。

缺點:性能瓶頸:反射相當於一系列解釋操作,通知 JVM 要做的事情,性能比直接的java代碼要慢很多。

 

反射的應用場景

反射是框架設計的靈魂。

在我們平時的項目開發過程中,基本上很少會直接使用到反射機制,但這不能說明反射機制沒有用,實際上有很多設計、開發都與反射機制有關,例如模塊化的開發,通過反射去調用對應的字節碼;動態代理設計模式也采用了反射機制,還有我們日常使用的 Spring/Hibernate 等框架也大量使用到了反射機制。

舉例:①我們在使用JDBC連接數據庫時使用Class.forName()通過反射加載數據庫的驅動程序;②Spring框架也用到很多反射機制,最經典的就是xml的配置模式。Spring 通過 XML 配置模式裝載 Bean 的過程:1) 將程序內所有 XML 或 Properties 配置文件加載入內存中; 2)Java類里面解析xml或properties里面的內容,得到對應實體類的字節碼字符串以及相關的屬性信息; 3)使用反射機制,根據這個字符串獲得某個類的Class實例; 4)動態配置實例的屬性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM