java反射作用與意義
阿新 • • 發佈:2018-12-23
1、反射的應用場合:在編譯時根本無法知道該物件或類可能屬於哪些類,程式只依靠執行時資訊來發現該物件和類的真實資訊.
2、反射的作用:通過反射可以使程式程式碼訪問裝載到JVM 中的類的內部資訊
獲取已裝載類的成員變數資訊
獲取已裝載類的方法
獲取已裝載類的構造方法資訊
常用方法:
getName()獲得類的完整名字
getPackage()獲取此類所屬的包
getSuperclass()獲得此類的父類對應的Class物件
getField(String name)獲得類的指定屬性
getMethods()獲得類的public型別的方法
getMethod (String name,Class [] args)獲得類的指定方法
每個Method物件對應一個方法,獲得Method物件後,可以呼叫其invoke() 來呼叫對應方法
Object invoke(Object obj,Object [] args):obj代表當前方法所屬的物件的名字,args代表當前方法的引數列表,返回值Object是當前方法的返回值,即執行當前方法的結果。
反射的缺點
效能問題
使用反射基本上是一種解釋操作,用於欄位和方法接入時要遠慢於直接程式碼。因此Java反射機制主要應用在對靈活性和擴充套件性要求很高的系統框架上,普通程式不建議使用。
使用反射會模糊程式內部邏輯
程式人員希望在原始碼中看到程式的邏輯,反射等繞過了原始碼的技術,因而會帶來維護問題。反射程式碼比相應的直接程式碼更復雜。