反射(複習總結)

2021-10-24 07:18:27 字數 1692 閱讀 1926

*反射:將類的各個組成部分封裝為其他物件,這就是反射機制

* 好處:

1. 可以在程式執行過程中,操作這些物件。

2. 可以解耦,提高程式的可擴充套件性。

獲取class物件的方式:

1.class.forname("全類名"):將位元組碼檔案載入進記憶體,返回class物件

* 多用於配置檔案,將類名定義在配置檔案中。讀取檔案,載入類

2.類名.class:通過類名的屬性class獲取

* 多用於引數的傳遞

3.物件.getclass():getclass()方法在object類中定義著。

* 多用於物件的獲取位元組碼的方式

* 結論:

同乙個位元組碼檔案(*.class)在一次程式執行過程中,只會被載入一次,不論通過哪一種方式獲取的class物件都是同乙個。

* class物件功能:

* 獲取功能:

1. 獲取成員變數

* fieldgetfields() :獲取所有public修飾的成員變數

* field getfield(string name)   獲取指定名稱的 public修飾的成員變數

* field getdeclaredfields()  獲取所有的成員變數,不考慮修飾符

* field getdeclaredfield(string name)  

2. 獲取構造方法

* constructor<?>getconstructors()  

* constructorgetconstructor(類<?>... parametertypes)  

* constructorgetdeclaredconstructor(類<?>... parametertypes)  

* constructor<?> getdeclaredconstructors()  

3. 獲取成員方法們:

* methodgetmethods()  

* method getmethod(string name, 類<?>... parametertypes)  

* method getdeclaredmethods()  

* method getdeclaredmethod(string name, 類<?>... parametertypes)  

4. 獲取全類名    

* stringgetname()  

* constructor:構造方法

* 建立物件:

* t newinstance(object... initargs)  

* 如果使用空引數構造方法建立物件,操作可以簡化:class物件的newinstance方法

* method:方法物件

* 執行方法:

* object invoke(object obj, object... args)  

* 獲取方法名稱:

* string getname:獲取方法名

javase複習 反射

反射 當位元組碼檔案載入到記憶體時,會進行解剖建立乙個對應的class物件,把位元組碼檔案的資訊都儲存進去。通過class物件使用位元組碼物件設定物件屬性,呼叫物件方法的過程叫做反射!person p new person 110,狗娃 class clazz1 class.forname cn.i...

反射的複習

反射 reflect 為什麼要用反射?把物件的集合轉為二維陣列,其實是把物件轉為陣列 把任意型別的物件轉為其屬性的陣列 什麼是反射?在程式執行時通過class類的物件獲取該物件所代表的類的資訊,以及操作。獲取class的物件 1.直接使用類,使用類名。class無論哪種方式,拿到的都是同乙個物件 c...

C 複習反射

反射中常用方法 1 獲取物件型別 2 one one new one 3 type t one.gettype 45 動態載入 6 assembly a assembly.loadfile path 7 獲取所有公共類 8 type tys assembly.getexportedtypes 910...