Class.getConstructors()在Java中返回的数组顺序如何

Bad*_*Egg 11 java reflection

众所周知,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)

Kev*_*sen 3

当我查看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)