如何'getConstructor'构造函数签名包含java数组

8 java reflection

是否可以使用getConstructor来获取下面的类X的构造函数?

public class A {
}

public class Y {

}

public class X extends Y {
    public X(A a, Y[] yy) {

    }
    public void someMethod() throws SecurityException, NoSuchMethodException {
        Class<? extends Y> clazz = X.class;
        Constructor<? extends Y> c =
            clazz.getConstructor(new Class[]{
                        A.class,
                        /* what do I put in here for the array of Ys? */
                    });
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 7

您可以像使用"未修饰"类一样构造涉及数组表示法的类文字,即ClassName[].class.这个文字产生"描述实例数组的类ClassName".在你的情况下:

clazz.getConstructor(new Class[] {
    A.class,
    Y[].class
 });
Run Code Online (Sandbox Code Playgroud)


Pet*_*rey 6

或者更短.

    Constructor<X> c = X.class.getConstructor(A.class, Y[].class);
Run Code Online (Sandbox Code Playgroud)