2010-01-17 3 views
7

getConstructor를 사용하여 아래 클래스 X의 생성자를 가져올 수 있습니까?생성자 시그니처가 Java 배열을 포함하는 'getConstructor'방법

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

감사

답변

6

당신은 배열 표기법을 포함하는 클래스 리터럴을 구성 할 수 있습니다 그냥 당신이 "장식되지 않은"클래스, 즉 ClassName[].class 때와 같은. 이 리터럴은 "ClassName 인스턴스 배열을 설명하는 클래스"를 산출합니다. 귀하의 경우 :

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

또는 그 이하.

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