我有一些代码:
public class foo<K> {
public void bar() {
K cheese = new K();
// stuff
}
}
这不编译,Intellij的linter告诉我Type parameter 'K' cannot be instantiated directly
。
我如何实例K
的新副本。
答案 0 :(得分:7)
由于type erasure,你不能很好地做到这一点。执行此操作的标准方法是传递适当的Class
对象,并使用它来实例化新实例。
e.g。来自here:
public static <E> void append(List<E> list, Class<E> cls) throws Exception {
E elem = cls.newInstance(); // OK
list.add(elem);
}