很多人学习反射的时候,回碰到的一个异常,
举个例子:这个类里面有四个构造函数
public class Person {
public Person() {
}
public Person(String name) {
this.name = name;
}
public Person(int age) {
this.age = age;
}
public Person(String name, int age) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "[" + this.name + " " + this.age + "]";
}
private String name;
private int age;
}
public static void test4(String className){
Class<?> demo1 = null;
try {
demo1=Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Person person1 = null;
Person person2 = null;
Person person3 = null;
Person person4 = null;
Constructor<?> cons[] = demo1.getConstructors();
try {
person1 = (Person) cons[0].newInstance();
person2 = (Person) cons[1].newInstance("xxx");
person3 = (Person) cons[2].newInstance(22);
person4 = (Person) cons[3].newInstance("xxx",22);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(person1);
System.out.println(person2);
System.out.println(person3);
System.out.println(person4);
}这样子就会报错,原因在于,赋值的时候和构造函数里面顺序是相反的,希望网上教程不要拿过来复制,粘贴,自己也动动手,免得对初学者造成误导,写下!
版权声明:本文为xiaokailele原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。