1. 程式人生 > >Java的反射的一些基本操作

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(物件名,設定值);