| 用反射得到的一个class类 在调用它的public T newInstance()方法,可以创建此 Class 对象所表示的类的一个新实例, 但是用该方法得到的如同用一个带有一个空参数列表的 new 表达式实例化该类。
 
 如果该类没有定义构造函数系统会定义一个无参数的构造函数 Person() {  };public Person(String name, int age) {                this.age=age;                this.name=name;        }时当定义了一个构造函数:
 该类就不会再有无参数的构造函数了
 所以该方法会报告错误。
 代码改动一下希望你能理解
 class Person{
 
 private String name;
 
 private int age;
 public Person() {
 System.out.println("被调用");
 }
 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+"]";
 }
 
 }
 
 
 class reflectTest{
 
 public static void main(String[] args) {
 Class<?> demo=null;
 
 try{
 
 demo=Person.class;
 
 }catch (Exception e) {
 
 e.printStackTrace();
 
 }
 
 Person per=null;
 
 try {
 
 per=(Person)demo.newInstance();
 
 } catch (InstantiationException e) {
 
 // TODO Auto-generated catch block
 
 e.printStackTrace();
 
 } catch (IllegalAccessException e) {
 
 // TODO Auto-generated catch block
 
 e.printStackTrace();
 
 }
 
 per.setName("lisi");
 
 per.setAge(20);
 
 System.out.println(per);
 
 }
 
 }
 运行结果
 被调用
 [lisi 20]
 
 
 
 |