java 反射机制 构造方法在Construct数组中的排序
通过Class类的方法可以获取一个类的所有构造方法,那么这些构造方法在返回的Construct数组中是怎么排序的那?
如例:定义了一个Person类,类中定义了四个构造方法,那么在利用java的反射机制实例化对象时,需要调用Construct类的newInstance方法,该方法需要传递参数,问题来了,各个构造方法的参数个数、类型不一样,该怎么判断是哪个构造方法哪?
import java.lang.reflect.*;
class Person{
//属性
private String name;
private int age;
//定义了4个构造方法
public Person(){};
public Person(String name){
this.name = name;
}
public Person(int age){
this.age = age;
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void setAll(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
//System .out.println("姓名:"+name+" 年龄:"+age);
return "姓名:"+name+" 年龄:"+age;
}
}
public class Ref{ //测试类
public static void main(String[] args)throws Exception{ //抛出所有异常,不处理!
Class<?> c = Class.forName("Person");
Person per = (Person)c.newInstance();
Constructor[] cons = c.getConstructors(); //返回构造方法数组
Person per = (Person)cons[1].newInstance("王辉",24); //该传递几个参数那???
System.out.println(per.toString());
}
}