Reflection--運行時對象的創建

運行時對象的創建是反射機制使用最多的地方。這裏我們用兩種方式創建運行時對象。

newInstance()

創建運行時類的對象使用的是newInstance(),實際上就是調用了運行時類的空參數的構造器。

要想能夠創建成功:①要求對應的運行時類要有空參數的構造器②類的構造器的訪問權限需要足夠。

難道沒有無參的構造器就不能創建對象了嗎?

不是!只要在操作的時候明確的調用類中的構造方法,並將參數傳遞進去之後,纔可以實例化操作。步驟如下:

1)通過Class類的getDeclaredConstructor(Class … parameterTypes)取得本類的指定形參類型的構造器

2)向構造器的形參中傳遞一個對象數組進去,裏面包含了構造器中所需的各個參數。

3)通過Constructor實例化對象。


//1.根據全類名獲取對應的Class對象

String name =“atguigu.java.Person";

Class clazz = null;

clazz =Class.forName(name);

//2.調用指定參數結構的構造器,生成Constructor的實例

Constructor con =clazz.getConstructor(String.class,Integer.class);

//3.通過Constructor的實例創建對應類的對象,並初始化類屬性

Person p2 = (Person)        con.newInstance("Peter",20);

System.out.println(p2);


指定構造器創建運行時類的對象。


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