- 在一次通过反射机制实例化对象的时候,通过一个有参构造器,实例化对象,主函数如下图代码,
public class ReflectionCreateInstance {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException,
IllegalAccessException, InvocationTargetException, InstantiationException {
// 1. 获取User 的 Class 对象;
Class<?> aClass = Class.forName("reflection_.class_.User")
// 2. 这里是无参构造器;
Object o = aClass.getConstructor().newInstance()
User user = (User)o
System.out.println(user)
// 3. 通过有参构造器,创建一个实例对象;
Object user1 = aClass.getConstructor().newInstance("牛蛙", 121)
System.out.println(user1)
}
}
- 报wrong number of arguments异常,如图所示:

class User{
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public User(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
}
解决办法:
- 在第三点注释下代码,添加对应参数Class类对象,如下图所示:
Object user1 = aClass.getConstructor(String.class,int.class).newInstance("牛蛙", 121);
System.out.println(user1);
- 运行结果如图所示:
