关于java:实例化类的对象,通过泛型给出类

Instantiate an object of a class where the class is given via generics

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Create instance of generic type in Java?

我有一些代码:

1
2
3
4
5
6
public class foo<K> {
    public void bar() {
        K cheese = new K();
        // stuff
    }
}

这不会编译,Intellij的linter告诉我Type parameter 'K' cannot be instantiated directly

我怎样才能举出一份新的K的副本呢?


由于类型擦除,您不能很好地执行此操作。执行此操作的标准方法是传递适当的Class对象,并使用它来实例化新实例。

例如,从这里:

1
2
3
4
public static <E> void append(List<E> list, Class<E> cls) throws Exception {
    E elem = cls.newInstance();   // OK
    list.add(elem);
}