Java

2016-04-02 19 views
0

Im o tip örneğin bir parametre olarak geçirilen tip, bir dizi oluşturmak için hiç mümkün olup olmadığını görmek isteyen bir parametre olarak geçirilen türünden ArrayList oluşturun:Java

public void doSomething(Class<?> itemClass){ 

    ArrayList<itemClass> newItems = new ArrayList<itemClass>(); 
} 

Ama Bu açıkça derleme değil. Böyle bir şey yapmak mümkün mü?

cevap

1

bu deneyin:

private <T> void makeTypedArray(Class T) { 
    ArrayList<T> typedArray = new ArrayList(); 
} 

yukarıda Java bir yönteme kullanılabilir bir türü geçmesine bildiğim tek yoludur.

+0

Yani gerçek nesne parametresi burada bir şey yapmıyor mu? veya? –

+0

Geçmişte yaptığım gibi, geçirilen nesne, yöntemin T için ne tür bir kullanım olduğunu söyler. Sınıfın bir örneğini geçmek istemezseniz muhtemelen Sınıf T'yi geçirebilirsiniz. Cevabımı düzenledim. – nhouser9

+0

1. Ham tiplerden kaçınılmalıdır. Yeni ArrayList () veya yeni ArrayList <>() 'yerine yeni ArrayList() işlevini kullanmanın bir nedeni yoktur. Ve 'Class' da bir ham türüdür. 2. Parametre kullanılmamıştır ve bu nedenle kaldırılmalıdır. 3. Parametre, "T" tipi ile aynı olacak şekilde kafa karıştırıcı olarak adlandırılır. – newacct