獲取 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類中定義著。多用於物...