标题: 反射实例化为什么会失败呢? [打印本页] 作者: 欧德林 时间: 2012-6-13 13:33 标题: 反射实例化为什么会失败呢? package Test;
public class JavaBean {
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("Test.Person"); //利用反射创建 实例
Person p = (Person)clazz.newInstance();
/*问题就报在这里了。Exception in thread "main" java.lang.InstantiationException: Exam.Person
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at Exam.JavaBean.main(JavaBean.java:24) */
}
}
public class Person {
private String 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;
}
private int age;
public Person(String name, int age){
this.age=age;
this.name=name;
}
} 作者: 李海晓 时间: 2012-6-13 13:36
Person p = (Person)clazz.newInstance(); 使用newInstance(); 方法实例化对象时,被实例化的类中必须有一个无参的构造方法,不然就不行,你应该往Person类中加一个无参构造方法作者: 欧德林 时间: 2012-6-13 13:42
李海晓 发表于 2012-6-13 13:36
Person p = (Person)clazz.newInstance(); 使用newInstance(); 方法实例化对象时,被实例化的类中必须有一 ...
那我直接就把 public Person(String name, int age){
this.age=age;
this.name=name;
}
去掉?
这样编译是通过了。会不会造成什么影响呢作者: 宋浩 时间: 2012-6-13 13:44
package Test;
public class JavaBean {
public static void main(String[] args) throws Exception {