2010-01-17 11 views
7

Aşağıdaki X sınıfının kurucusunu edinmek için getConstructor kullanmak mümkün mü?Oluşturucu imzasının java dizisi içerdiği 'getConstructor' nasıl yapılır?

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

Teşekkür

cevap

6

Sen dizi gösterimini içeren sınıf değişmezleri gerçekleştirebilmesi sadece "bezemesizdir" sınıflar, yani ClassName[].class ile yaptığım gibi. Bu değişmez "ClassName örneklerinin dizilerini tanımlayan sınıf" verir. Sizin durumunuza:

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

Ya da daha kısa.

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