使用場景
- 在編譯時無法知道該對象或類可能屬於哪些類,程序在運行時獲取對象和類的信息
作用
- 通過反射可以使程序代碼訪問裝載到 JVM 中的類的內部信息,獲取已裝載類的屬性信息、方法信息
優點
- 提高了 Java 程序的靈活性和擴展性,降低耦合性,提高自適應能力。
- 允許程序創建和控制任何類的對象,無需提前硬編碼目標類
- 應用很廣,測試工具、框架都用到了反射
缺點
- 性能問題:反射是一種解釋操作,遠慢於直接代碼。因此反射機制主要用在對靈活性和擴展性要求很高的系統框架上,普通程序不建議使用
- 模糊程序內部邏輯:反射繞過了源代碼,無法再源代碼中看到程序的邏輯,會帶來維護問題
- 增大了復雜性:反射代碼比同等功能的直接代碼更復雜