簡介反射與圖說反射

介紹:
什麼是java的反射機制?
Java反射機制是在運行狀態中,對於一個任意一個類,都能夠知道這個類的所有屬性和方法,對於任意一個對象,都能夠調用他的任意方法和屬性,這種動態獲取信息以及動態調用對象的方法的功能稱爲java語言的反射機制
圖說反射:看圖
在這裏插入圖片描述
a文件進行編譯成.class文件,然後虛擬機中的加載器對他進行加載,然後動態獲取這個類的屬性和方法,也可生成它的實例
作用:
用來編寫一些通用性較高的代碼或者框架的時候使用
常用對象:
Class類
Class類的實例對象表示正在運行的Java應用程序的類和接口
Constructor類
關於類的單個構造方法的信息以及他的訪問權限
Field類
Field提供有關類或者接口的單個字段的信息,以及對它的動態訪問權限
Method類
Method提供關於類或者接口上單獨某個方法的信息
在這裏插入圖片描述
他們具體的使用:
Class類:
代表某個類的字節碼,並提供了加載字節碼的方法forName(“包名.類名”);這個方法用於加載類字節碼到內存中,並且封裝成一個class對象返回
如何得到某個class文件對應的class對象:
已知類名和對象:
類名.class
對象名.getClass()
未知
Class.forName(“包名.類名”);
Constructor類
Construc類的實例對象代表類的一個構造方法
得到某個類所有的構造方法
getConstructors()
得到指定的構造方法
getConstructor(String.class)
它返回一個Constructor對象,它反映此class對象所表示的類的指定的一個公共構造方法。這些class對象按聲明順序標識構造方法的形參類型
newInstance()方法
使用此 Constructor 對象表示的構造方法來創建該構造方法的聲明類的新實例,並用指定的初始化參數初始化該實例。也就是實例化對象
Field類
Field類代表某個類中的一個成員變量並且提供動態的訪問權限。
getField(“name”)
getDeclaredField(“name”)
設置私有的屬性可以被訪問setAccessible(true)
Field變量值的讀取,設置
field.get(Obj)
field.set(Obj,value)
Method類
Method類代表某個類中的一個成員方法
Method對象的獲得
getDeclaredMethod(String name,參數)
通過反射來執行方法
method.invoke(Obj …)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章