黑馬程式設計師 反射

2021-07-05 21:24:46 字數 2245 閱讀 5542

反射(理解)

(1)反射:在程式執行時期,是通過

class

檔案物件,去使用構造方法,成員變數,成員方法。

(2)獲取

class

檔案物件

1:object類的

getclass()

方法2:資料型別的靜態的

class

屬性3:class類

forname()

靜態方法

推薦:開發使用第三種。

class類中的方法

static class forname(string classname)

返回與給定字串名的類或介面的相關聯的class物件。

class getclass()

返回的是object執行時的類,即返回class物件即位元組碼物件

constructor getconstructor()

返回constructor物件,它反映此class物件所表示的類的指定公共構造方法。

field getfield(string name)

返回乙個field物件,它表示此class物件所代表的類或介面的指定公共成員字段。

field getfields()

返回包含某些field物件的陣列,表示所代表類中的成員字段。

method getmethod(string name,class…parametertypes)

返回乙個method物件,它表示的是此class物件所代表的類的指定公共成員方法。

method getmehtods()

返回乙個包含某些method物件的陣列,是所代表的的類中的公共成員方法。

string getname()

以string形式返回此class物件所表示的實體名稱。

string getsuperclass()

返回此class所表示的類的超類的名稱

boolean isarray()

判定此class物件是否表示乙個陣列

boolean isprimitive()

判斷指定的class物件是否是乙個基本型別。

t newinstance()

建立此class物件所表示的類的乙個新例項。

(3)反射的應用

1:通過反射獲取構造方法並使用

//獲取位元組碼檔案物件

class c = class.forname("cn.itcast.person");

//獲取構造器物件

constructor con = c.getdeclearedconstrator(string.class,int.class);

//通過構造器物件獲取

person

物件object obj = con.newinstance("劉意

",29);

2:通過反射獲取成員變數並使用

//獲取位元組碼檔案物件

class c = class.forname("cn.itcast.person");

//獲取構造器物件

constructor con = c.getdeclearedconstrator(string.class,int.class);

//通過構造器物件獲取

person

物件object obj = con.newinstance("劉意

",29);

//獲取成員變數

field field = c.getdeclaredfield("name");

field.setaccessiable(true);

field.set(obj,"劉大意

");

3:通過反射獲取成員方法並使用

//獲取位元組碼檔案物件

class c = class.forname("cn.itcast.person");

//獲取構造器物件

constructor con = c.getdeclearedconstrator(string.class,int.class);

//通過構造器物件獲取

person

物件object obj = con.newinstance("劉意

",29);

//獲取所有公共方法物件,包括從父類繼承的

//(獲取本類所有方法的時候,不包括從父類繼承的

)method methods = c.getdeclaredmethods();

for(method m : methods)

黑馬程式設計師 反射

反射技術 實就是動態載入乙個指定的類,並獲取該類中的所有的內容。而且將位元組碼檔案封裝成物件,並將位元組碼檔案中的內容都封裝成物件,這樣便於操作這些成員。簡單說 反射技術可以對乙個類進行解剖。反射的好處 大大的加強了程式的擴充套件性。反射的基本步驟 1.獲得class物件,就是獲得指定的檔案的位元組...

黑馬程式設計師 反射機制

反射故名思意,就是將乙個物件對映出來。型別能看清裡面的架構。就好比乙個鏡子裡照映出自己的影子一樣。1 如何獲取物件的型別名?class sample1 public class classreflection 2 如何獲取物件的構造方法?class sample1 public sample1 st...

黑馬程式設計師 反射技術

動態載入乙個類,得到這個類中的所有內容。而且將位元組碼檔案封裝在乙個物件中 class物件 並將位元組碼中的內容都封裝成對像,這樣便於操作這些成員。可以說反射技術大大地增強了程式的擴張性,因為乙個類進行解刨後,可以對他進行很多操作。得到類的位元組碼,將這個類的位元組碼封裝在class物件中 例項化物...