java反射機制是框架實現的基石,大大增加程序的靈活性和通用性。
一.反射機制原理
反射定義:
java的反射機制是指在程序運行狀態中,對於任意一個類都能知道這個類的所有屬性和方法;並且對於任意一個類都能調用任意一個方法,這種動態獲取信息以及動態調用對象方法的功能稱爲java的反射機制。
java反射理解的核心把java中的各種成分映射成一個個java對象,存儲在Class類中,所以重點是理解Class類
Class類的實例表示正在運行的Java的類和接口
Class 沒有公共構造方法,Class 對象是在加載類時由 Java 虛擬機以及通過調用類加載器中的defineClass方法自動構造的。也就是這不需要我們自己去處理創建,JVM已經幫我們創建好了。
在程序運行期間要想獲取或者修改對象信息,例如:獲取類的成員變量,成員方法,或者對該對象的信息進行修改,可以利用反射技術把各種成分映射爲java對象,然後再對java對象進行操作。
反射機制的好處:無需把類硬編碼的代碼中,可以大大增加代碼的靈活性和通用性,對象信息在程序執行的過程中進行獲取,因此特別適合對靈活要求較高的各種框架中。
二.Class類獲取的三種方式
1.通過Object類中getClass()方法獲取一個Class實例
例如:
Employee employee = new Employee("liujie",28);
Class c1 = employee.getClass();
2.通過Class類中靜態方法forName()方法獲取一個Class實例
String str = "com.company.Employee";
Class c = Class.forName(str);
3.任何一個數據類型都一個class靜態屬性
Class c = Employee.class;
注意:在運行期間一個類只有一個Class對象產生
三.Java反射機制的功能
Java反射機制提供如下功能:
在運行時判斷任意一個對象所屬的類
在運行時構造任意一個類的對象
在運行時判斷任意一個類所具有的成員變量和方法
在運行時調用任一個對象的方法
在運行時創建新類對象
在使用Java的反射功能時,基本首先都要獲取類的Class對象,再通過Class對象獲取其他的對象。