构造泛型类的新实例

时间:2012-02-08 00:52:31

标签: java generics

为什么这不起作用?

class MyClass<GenericClass> {
  GenericClass myInstance;

  MyClass() {
    myInstance = new GenericClass();
  }
}

我在“新”上收到“无法实例化”COMPILE时间错误消息。即使我确保有一个无参数构造函数。


跟进:有没有一种解决这个问题的首选方法?或者我被迫这样做(假设我已将setMyInstance()方法添加到MyClass&lt;&gt;

class Other {
...
...
}

MyClass<Other> mine = new MyClass<Other>();
mine.setMyInstance(new Other());

这不是很好,因为我被迫在其之外揭示了MyClass的实现。

处理它的更好方法是什么?

2 个答案:

答案 0 :(得分:2)

两个字:type erasure

类型参数的具体值在运行时不可用,因此无法知道要实例化的类型。此外,无法保证可以使用可调用的无参数构造函数。

答案 1 :(得分:0)

Type erasure再次罢工!