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

时间:2010-01-17 10:15:51

标签: 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? */
                    });
    }
}

由于

2 个答案:

答案 0 :(得分:7)

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

clazz.getConstructor(new Class[] {
    A.class,
    Y[].class
 });

答案 1 :(得分:6)

或更短。

    Constructor<X> c = X.class.getConstructor(A.class, Y[].class);