當前位置:編程學習大全網 - 源碼下載 - 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);

}

}

  • 上一篇:ec文件怎麽打開
  • 下一篇:誰有壹個非常基礎的C語言基礎題!!我想要!!
  • copyright 2024編程學習大全網