java 反射机制 构造方法在Construct数组中的排序

江湖人·92 2015-12-01 01:03:30
通过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());
}
}
...全文
212 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
南木以北 2015-12-06
  • 打赏
  • 举报
回复
和参数有关啊~~
piaopiao11 2015-12-02
  • 打赏
  • 举报
回复
Constructor<Person> constructor=c.getConstructor(String.class,int.class); Person per = (Person)constructor.newInstance("王辉",24); 可以指定参数类型获取构造方法。
Cx_轩 2015-12-02
  • 打赏
  • 举报
回复
不同的参数个数 代表着不同的构造方法啊
jxplus 2015-12-02
  • 打赏
  • 举报
回复
Constructor中有获取参数信息的方法,包括参数类型,参数个数。做下逻辑判断就好了。
加权不平权 2015-12-02
  • 打赏
  • 举报
回复

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧