无法在Java中实例化泛型类型实例
Possible Duplicate:
Create instance of generic type in Java?
我有点麻烦。我无法在默认构造函数中实例化泛型类型实例。 这是我的班级
public class MyClass<U extends MyUser> {
private U user;
public U getUser() {
return this.user;
}
public void setUser(U user) {
this.user = user;
}
public MyClass() {
this.user = new U();
}
}
在代码行this.user = new U()
我得到了异常
cannot instantinate type U
。如何创建U的新实例
提前谢谢
# 1 楼答案
Java泛型在运行时不知道模板参数的类型。因此,在您的示例中,
U
的运行时类型未知,因此构造函数无法执行new U()
您需要将类型
U
(类似于Foo.class
)传递给constructor,以便它知道如何创建类型U
的新obejct# 2 楼答案
在实例化用户时,需要指定类型。该类型必须是MyUser或MyUser的子类型