8

我需要调用一个超级构造函数,它需要我传递.class泛型类型的引用。我怎样才能用Java实现这一点?

构造函数想要..

Class<List<MyType>>

由于泛型在运行时被删除,我不知道如何满足构造函数。

List<MyType>.class // does not work ;-)
4

2 回答 2

8

像这样(Class首先转换为原始类型):

@SuppressWarnings({ "unchecked", "rawtypes" })
Class<List<MyType>> clazz = (Class) List.class
于 2012-08-21T08:08:22.850 回答
1

你不能调用构造函数 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);
于 2012-08-21T08:13:39.137 回答