反射 框架設計的靈魂

2021-10-18 15:10:54 字數 2334 閱讀 6865

獲取 class 物件的方式:

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

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

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

- 多用於引數的傳遞

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

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

獲取構造方法們

獲取成員方法們

獲取類名

field:成員變數

獲取值

忽略訪問許可權修飾符的安全檢查

constructor:構造方法

method : 方法物件

案例:

獲取成員變數們

public

static

void

main

(string[

] args)

throws exception

system.out.

println

("------------------");

getfield(string name)

field a = studentclass.

getfield

("a");

//獲取成員變數a的值

student student =

newstudent()

; object value = a.

get(student)

; system.out.

println

(value)

;//設定a的值

a.set(student,

"張三");

system.out.

println

(student);

system.out.

println

("***************====");

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

//在反射面前沒有公有私有!!!

field[

] declaredfields = studentclass.

getdeclaredfields()

;for

(field declaredfield:declaredfields)

//field getdeclaredfield(string name)

field d = studentclass.

getdeclaredfield

("id");

//忽略訪問許可權修飾符的安全檢查

d.setaccessible

(true);

//暴力反射

object value2 = d.

get(student)

; system.out.

println

(value2)

;}

獲取構造器

public

static

void

main

(string[

] args)

throws exception

獲取成員方法們 + 獲取類名

public

static

void

main

(string[

] args)

throws exception

//獲取類名

string classname = studentclass.

getname()

; system.out.

println

(classname)

;}

案例

public

static

void

main

(string[

] args)

throws exception

反射 框架設計的靈魂

獲取class物件的方式 1.class.forname 全類名 將位元組碼檔案載入進記憶體,返回class物件 多用於配置檔案,將類名定義在配置檔案中。讀取檔案,載入類 2.類名.class 通過類名的屬性class獲取 多用於引數的傳遞 3.物件.getclass getclass 方法在obj...

反射 框架設計的靈魂

可以在程式執行過程中,操作這些物件 可以解耦提高程式的可擴充套件性 class.forname 全類名 將位元組碼檔案載入進記憶體,返回class物件,多用於配置檔案,將類名定義在配置檔案中,讀取檔案,載入類 類名.class 通過類名的屬性class獲取,多用於引數的傳遞 物件.getclass ...

反射基礎 框架設計的靈魂

1.class.forname 全類名 將位元組碼檔案載入進記憶體,返回class物件 多用於配置檔案,將類名定義在配置檔案中。讀取檔案,載入類 2.類名.class 通過類名的屬性class獲取 多用於引數的傳遞 3.物件.getclass getclass 方法在object類中定義著。多用於物...