JAVA 反射 常用方法的示例 詳解
- 2019 年 11 月 7 日
- 筆記
什麼是Java 反射?
就是正在運行,動態獲取這個類的資訊。
反射機制的作用?
1.反編譯 .class 文件到 .java 文件
2.通過反射機制 訪問對象的構造方法,方法,屬性等。
如何通過反射獲取類?
這裡又三種方法,可以通過反射動態獲取類。
第一種:

第二種:

第三種:

這三種有什麼區別?
總結:第一種通過forName() 方法 執行靜態塊,不執行動態塊
第二種通過.class 方法 不執行靜態塊和動態塊
第三種:需要創建對象,靜態塊,動態塊都會執行
注意:靜態塊 類只載入一次,如果已經載入則不會重複載入,動態塊,每次new 對象都會執行。
效果如圖:
第一種:


第二種:

第三種:

java反射創建對象?
如何創建對象?
通過實例化構造函數來創建對象。
通過反射創建對象
1.實例化 無參 構造函數

2.實例化有參構造函數

通過反射獲取方法,屬性等API
getDeclaredMethods() :獲取該類的所有方法
getReturnType() :獲取該類方法的返回值
getParameterTypes() :獲取該類方法傳入參數
getDeclaredFields() :獲取該類所有欄位
setAccessible :允許訪問私有成員
這裡都是獲取改類的?那麼如何獲取父類的呢?
通過 子類.getSuperclass() 獲取父類對象
getDeclaredMethods 獲取該類的所有方法

getReturnType()獲取方法的返回值

getParameterTypes() 獲取該類方法的傳入參數類型

getDeclaredFields() 可以訪問變數,注意這裡只能訪問公共成員變數私有變數是訪問不到的



setAccessible 設置可以訪問私有成員變數
