众所周知,Java反射提供了Class.getConstructors方法,但Constructor<?>[]数组的顺序如何?
例如,我创建了Person类,并且有3个构造方法:
public Person()
{
}
public Person(int age)
{
this.age = age;
}
public Person(int age, String name)
{
this.age = age;
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
通过调试,我发现构造函数数组的顺序如下:
0 = public xxx.Person(int)
1 = public xxx.Person(int, java.lang.String)
2 = public xxx.Person()
Run Code Online (Sandbox Code Playgroud)
当我查看Class#getDeclaredConstructors() 方法时,我注意到以下行:
“返回的数组中的元素没有排序,也没有任何特定的顺序。”
在Class#getConstructors() 方法中,虽然没有提到这一点。即使没有提到,我的假设是,这同样适用于该方法,您的代码已经证明了这一点。
我不确定您想要完成什么(也许您可以将您的目标添加到您的问题中,以便我们能够进一步帮助您),但我认为不可能使用反射以相同的顺序获得构造函数。
编辑:使用示例中的构造函数,您可以像这样调用三个中的任何一个:
Class<Person> pClass = Person.class;
pClass.getDeclaredConstructor().newInstance(); // default constructor
pClass.getDeclaredConstructor(int.class).newInstance(50); // constructor with int parameter
pClass.getDeclaredConstructor(int.class, String.class).newInstance(50, "test"); // constructor with int and String parameters
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |