package Reflect;import java.lang.reflect.Constructor;class Demo
{}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 int getAge()
{
return age;
} @Override
public String toString()
{
return "[" + this.name + "  " + this.age + "]";
} private String name;
private int age;
}public class Hello
{ public static void main(String[] args)
{
Class<?> demo = null;
try
{
demo = Class.forName("Reflect.Person");
} catch (Exception e)
{
e.printStackTrace();
}
Person per1 = null;
Person per2 = null;
Person per3 = null;
Person per4 = null;
// 取得全部的构造函数
Constructor<?> cons[] = demo.getConstructors();
try
{
per1 = (Person) cons[0].newInstance();
per2 = (Person) cons[1].newInstance("Rollen");
per3 = (Person) cons[2].newInstance(20);
per4 = (Person) cons[3].newInstance("Rollen", 20);
} catch (Exception e)
{
e.printStackTrace();
}
System.out.println(per1);
System.out.println(per2);
System.out.println(per3);
System.out.println(per4); }
}
错误如下。

解决方案 »

  1.   


    运行了一下:
    result:
    [null  0]
    [Rollen  0]
    [null  20]
    [Rollen  20]
    没有问题顺便问一下,你的95行是哪一行?
      

  2.   

    per1 = (Person) cons[0].newInstance();
    per2 = (Person) cons[1].newInstance("Rollen");
    per3 = (Person) cons[2].newInstance(20);
    per4 = (Person) cons[3].newInstance("Rollen", 20); 
    你能确定获取到的构造方法的顺序是按照你写的顺序???
    输入不能确定,那么就是在你调用newInstnce()创建对象的时候参数列表不对
    要解决这个问题还是不要获取构造方法的数组,最好是按照参数列表获取单个构造方法来创建实例