文章出處

一、何謂反射機制 

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

二、反射機制如何實現

首先得的是java.lang.Class這個類。

Java程序在運行時,Java運行時系統一直對所有的對象進行所謂的運行時類型標識。這項信息紀錄了每個對象所屬的類。虛擬機通常使用運行時類型信息選準正確方法去執行,用來保存這些類型信息的類是Class類。

三、獲取Class對象有三種方式: 

1.通過Object類的getClass()方法。例如:

Class c1 = new String("").getClass();

2.通過Class類的靜態方法——forName()來實現:

Class c2 = Class.forName("MyObject");

3.如果T是一個已定義的類型的話,在java中,它的.class文件名:T.class就代表了與其匹配的Class對象,例如:

Class c3 = Manager.class;

 

四、Class類中存在以下幾個重要的方法: 

1.getName()

一個Class對象描述了一個特定類的特定屬性,而這個方法就是返回String形式的該類的簡要描述。由于歷史原因,對數組的Class對象 

 

2.newInstance()

該方法可以根據某個Class對象產生其對應類的實例。需要強調的是,它調用的是此類的默認構造方法。例如:

MyObject x = new MyObject();

MyObject y = x.getClass().newInstance();

 

3.getClassLoader()

返回該Class對象對應的類的類加載器。

 

4.getComponentType()

該方法針對數組對象的Class對象,可以得到該數組的組成元素所對應對象的Class對象。例如:

int[] ints = new int[]{1,2,3};

Class class1 = ints.getClass();

Class class2 = class1.getComponentType();

而這里得到的class2對象所對應的就應該是int這個基本類型的Class對象。

 

5.getSuperClass()

返回某子類所對應的直接父類所對應的Class對象。

 

6.isArray()

判定此Class對象所對應的是否是一個數組對象。

Class c4 = int.class;

Class c5 = Double[].class;

 

五、反射機制的優點與缺點 

反射機制的優點  就是可以實現動態創建對象和編譯,體現出很大的靈活性。 
缺點  對性能有影響。

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()