Person 是带有构造函数的抽象类:
/**
* default Person constructor with no attribute
*/
public Person() {}
public Person(String firstName, String lastName, String ssn, Address address) {
this.firstName = firstName;
this.lastName = lastName;
this.ssn = ssn;
this.address = address;
}
地址构造函数:
public Address() {
}
public Address(int streetNum, String streetName, String city, String zip, String state) {
this.streetNum = streetNum;
this.streetName = streetName;
this.city = city;
this.zip = zip;
this.state = state;
}
这是我迄今为止在 ReflectionTest 类中尝试过的,但出现以下错误。不知道为什么会导致该错误以及如何修复它?
java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at ReflectionTest.main(ReflectionTest.java:55)
try {
Constructor<Person> personConstructor = Person.class.getConstructor(String.class, String.class, String.class, Address.class);
Constructor<Address> addressConstructor = Address.class.getConstructor(int.class, String.class, String.class, String.class, String.class);
Address a2 = addressConstructor.newInstance(11, "Main Street", "SJ", "99990", "CA");
Person p2 = personConstructor.newInstance("Victor", "Nguyen", "001", a2);
Address a3 = addressConstructor.newInstance(11, "Main Street", "SJ", "99990", "CA");
Person p3 = personConstructor.newInstance("Tina", "Vang", "002", a3);
Address a4 = addressConstructor.newInstance(12, "Main Street", "SJ", "99991", "CA");
Person p4 = personConstructor.newInstance("Max", "Vang", "003", a4);
p2.setFirstName("N");
p2.setLastName("L");
p2.setAge(22);
System.out.println("Person 1: " + p2.toString());
System.out.println("Person 2: " + p3.toString());
System.out.println("Person 3: " + p4.toString());
} catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException | InstantiationException e) {
e.printStackTrace();
}
提前致谢!