利用反射创建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();
}
}