Java的反射的一些基本操作

一個Java類被加載的時候,JVM會創建一個與之對應的Class類,這個類可以反映Java類的所有信息。Class類只會加載一次,所有對應類的對象都是同一個Class類。

Class c = Class.forName(); //獲得類的Class類
Field f = c.getField(); //獲得public屬性
Field f = c.getDeclaredField(); // 獲得類所有的屬性名稱
獲得方法:
形式與獲得屬性一致,需要將Field換成Method
Method m = c.getDeclaredMethod(方法名稱, 參數類型.class);
Constructor則是構造器

使用反射動態構造類:
Class c = (Class) Class.forName();
Obj o = c.newInstance(); // 實際調用的就是類的無參構造方法
// 指定構造器創建類對象
Constructor cons = c.getDeclaredConsturctor(參數.class, …);
Obj demo = cons.newInstance(參數,…);

使用反射調用類的普通方法:
Class c = (Class) Class.forName();
Obj demo = c.newInstance();
demo.method(); // 快捷調用
// 通過反射動態調用
Method m = c.getDeclaredMethod(方法名稱, 參數類型.class);
m.invoke(); //啓動
// 通過反射直接操作類的屬性:
Field f = c.getDeclaredField(屬性名);
f.setAccessible(true); // 使用這個函數後可以直接操作私有變量
f.set(對象名,設置值);

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