利用反射創建Class類對應的類實例對象
- Class對象的newInstance()方法,調用類無參構造器創建對象
- 調用Class對象的getConstructor(參數.class),返回相應的類構造器,再次調用構造器的newInstance(參數),構建對象
public class ClassDome {
public static void main(String[] args) {
/*
* 使用Class對象實例化類的實例對象,調用的是類的無參構造器
*/
Date test = null;
try {
Class<Date> dateClass = Date.class;
test = (Date)dateClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(test);
/*
* 調用帶參構造器實例化對象,先調用setConstructor(參數.class),返回構造器對象
* 調用構造器對象的newInstance方法,傳入相應的參數,調用相應的構造器,創建實例
*/
Integer integer = null;
try {
Class<?>cl = Class.forName("java.lang.Integer");
Constructor<?> num = cl.getConstructor(int.class);
integer = (Integer) num.newInstance(5);
System.out.println(integer.intValue());
} catch (Exception e) {
e.printStackTrace();
}
}