Java的反射機制,java反射
JAVA反射機制:“程式運行時,允許改變程式結構或變數類型,這種語言稱為動態語言”。概述:
JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態擷取的資訊以及動態調用對象的方法的功能稱為java語言的反射機制。
功能:
Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變數和方法;在運行時調用任意一個對象的方法;產生動態代理。
所以JAVA反射機制是Java動態性的體現.
什麼是JAVA的反射機制?Reflection Java 程式開發語言特徵之允許運行 Java 程式對自身進行檢查或者說自審並能直接操作程式內部屬性例使用能獲得 Java 類各成員名稱並顯示出來
Java 能力實際應用也許用得多其程式設計語言根本存特性例Pascal、C 或者 C++ 沒有辦法程式獲得函數定義相關資訊
JavaBean reflection 實際應用之能讓些工具視化操作軟體組件些工具通過 reflection 動態載入並取得 Java 組件(類) 屬性
JAVA的反射機制import java.lang.reflect.*;
/*所謂反射機制 類調用另類裡面方法和屬性等另類能還沒有定義好
* 只要知道裡面有方法調用;調用類要現獲得哪類完整名字建立類對象
* 調用無參執行個體化對象書出了
* 有參數構造需要getDeclaredConstructor()方法得相對應建構函式放Constructor變數裡面
* 建立Object對象執行個體化有剛才得建構函式輸出
使用反射機制:
調用無參構造器執行個體華 House對象;
調用有參數構造起執行個體華House對象;
調用toString方法
*/
public class ReflectTestPro {
public static void main(String[] args) throws Exception {
Class c = Class.forName("chap06.House");//路徑
// new House();
// 調用無參構造器執行個體華 House對象;
Object h1 = c.newInstance();// 多態表現 父類和子類
System.out.println(h1);
// 調用無參構造器執行個體華 ArrayList對象;
Class c1 = Class.forName("java.util.ArrayList");// 類名要完整
Object h2 = c1.newInstance();// 相當於new ArrayList();
System.out.println(h2);
// 調用有參數構造起執行個體華House對象;
Constructor cons = c.getDeclaredConstructor(new Class[] { String.class,
String.class, double.class });//其建構函式裡面參數類型定要致
Object h3 = cons.newInstance(new Object[] { "shanghai", "3-2-1",
new Double(100.0) });//執行個體化類執行個體
// 相當於常規方式new House("shanghai///,"3-2-1",100)
System.out.println(h3);
// 調用有參構造器執行個體華 Date對象
Class c4 = Class.forName("java.util.Date");
Constructor cons4 = c4.getDeclaredConstructor(new Class[] { long.class });
Object h4 = cons4.newInstance(new Object[] { new Long(999999l) });
System.out.println(h4);
// 調用toString方
Method m = c.getDeclaredMethod("toString", new Class[] {});
String s = (String) m.invoke(h3, new Object[] {});// Stirng
// s=h3.toString();
System.out.println(s);
}
}