通过反射机制获取Class,再实例化对象:
测试代码:
package reflect;
public class Test02 {
public static void main(String[] args) {
// 不使用反射机制创建对象
User u1 = new User(1001);
System.out.println(u1); // User{id=1001}
// 使用反射机制创建对象
try {
// 获取Class文件
Class cUser = Class.forName("reflect.User");
// 使用new来完成对象的创建,它会调用对应类的无参数构造方法,你得先保证该类存在无参数构造方法
Object obj = cUser.newInstance(); // 这个方法没有参数
System.out.println(obj); // User{id=0}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}
class User {
int id;
public User() {
}
public User(int id) {
this.id = id;
}
@Override
public String toString() {
return "User{" + "id=" + id + '}';
}
}