反射技術:
實就是動態載入乙個指定的類,並獲取該類中的所有的內容。而且將位元組碼檔案封裝成物件,並將位元組碼檔案中的內容都封裝成物件,這樣便於操作這些成員。簡單說:反射技術可以對乙個類進行解剖。
反射的好處:大大的加強了程式的擴充套件性。
反射的基本步驟:
1.獲得class物件,就是獲得指定的檔案的位元組碼檔案物件。
2.例項化物件,獲得類的屬性,方法或建構函式。
3.訪問屬性,呼叫方法、呼叫建構函式建立物件。
獲取class物件有3種方法:
1:通過每個物件都具備的方法getclass來獲取。弊端:必須要建立該類物件,才可以呼叫getclass方法。
2:每乙個資料型別(基本資料型別和引用資料型別)都有乙個靜態的屬性class。弊端:必須要先明確該類。
前兩種方式不利於程式的擴充套件,因為都需要在程式使用具體的類來完成。
3:使用的class類中的方法,靜態的forname方法。
指定什麼類名,就獲取什麼類位元組碼檔案物件,這種方式的擴充套件性最強,只要將類名的字串傳入即可。
獲取位元組碼檔案物件後,都需要建立指定類的物件。
建立物件的兩種方式(其實就是物件在進行例項化時的初始化方式):
1,呼叫空引數的建構函式:使用了class類中的newinstense方法。
2,呼叫帶引數的建構函式:先要獲取指定引數列表的建構函式物件,然後通過該建構函式的物件的newinstense()進行物件的初始化。
綜上所述,第二種方式,必須要先明確具體的建構函式的引數型別,不便於擴充套件。所以一般的別反射的類,都會在類中提供乙個共有的空參建構函式。
黑馬程式設計師 反射
反射 理解 1 反射 在程式執行時期,是通過 class 檔案物件,去使用構造方法,成員變數,成員方法。2 獲取 class 檔案物件 1 object類的 getclass 方法2 資料型別的靜態的 class 屬性3 class類 forname 靜態方法 推薦 開發使用第三種。class類中的...
黑馬程式設計師 反射機制
反射故名思意,就是將乙個物件對映出來。型別能看清裡面的架構。就好比乙個鏡子裡照映出自己的影子一樣。1 如何獲取物件的型別名?class sample1 public class classreflection 2 如何獲取物件的構造方法?class sample1 public sample1 st...
黑馬程式設計師 反射技術
動態載入乙個類,得到這個類中的所有內容。而且將位元組碼檔案封裝在乙個物件中 class物件 並將位元組碼中的內容都封裝成對像,這樣便於操作這些成員。可以說反射技術大大地增強了程式的擴張性,因為乙個類進行解刨後,可以對他進行很多操作。得到類的位元組碼,將這個類的位元組碼封裝在class物件中 例項化物...