運行時對象的創建是反射機制使用最多的地方。這裏我們用兩種方式創建運行時對象。
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);