1. 程式人生 > >java反射作用與意義

java反射作用與意義

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反射機制主要應用在對靈活性和擴充套件性要求很高的系統框架上,普通程式不建議使用。

使用反射會模糊程式內部邏輯

程式人員希望在原始碼中看到程式的邏輯,反射等繞過了原始碼的技術,因而會帶來維護問題。反射程式碼比相應的直接程式碼更復雜。