我需要调用一个超级构造函数,它需要我传递.class
泛型类型的引用。我怎样才能用Java实现这一点?
构造函数想要..
Class<List<MyType>>
由于泛型在运行时被删除,我不知道如何满足构造函数。
List<MyType>.class // does not work ;-)
像这样(Class
首先转换为原始类型):
@SuppressWarnings({ "unchecked", "rawtypes" })
Class<List<MyType>> clazz = (Class) List.class
你不能调用构造函数 for List<MyType>
,事实上你不能调用构造函数 forList
作为它的接口。您可以做的是调用构造函数ArrayList.class
并传递您期望的元素的类型。
public C createCollection(Class<? extends Collection> collectionClass, Class elementClass, int number) {
Collecton c = (Collection) collectionClass.newInstance();
for(int i=0;i<number;i++)
c.add(elementClass.newInstance());
return (C) c;
}
List<MyType> list = createCollection(ArrayList.class, MyType.class, 100);