无法在Java中实例化泛型类型实例

无法在Java中实例化泛型类型实例,java,generics,Java,Generics,可能重复: 我有点麻烦。我无法在默认构造函数中实例化泛型类型实例。 这是我的班级 public class MyClass<U extends MyUser> { private U user; public U getUser() { return this.user; } public void setUser(U user) { this.user = user; } public MyCl

可能重复:

我有点麻烦。我无法在默认构造函数中实例化泛型类型实例。 这是我的班级

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();
    }
}
公共类MyClass{
私人用户;
公共用户{
返回此.user;
}
公共无效设置用户(U用户){
this.user=用户;
}
公共MyClass(){
this.user=new U();
}
}
在代码行
this.user=new U()
中,我遇到异常

无法实例化类型U

。如何创建U的新实例


提前感谢

您需要在实例化用户时指定类型。该类型必须是MyUser或MyUser的子类型

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 MyClass<U>();
  }
}
公共类MyClass{
私人用户;
公共用户{
返回此.user;
}
公共无效设置用户(U用户){
this.user=user;
}
公共MyClass(){
this.user=new MyClass();
}
}

Java泛型在运行时不知道其模板参数的类型。因此,在您的示例中,
U
的运行时类型未知,因此构造函数无法执行
new U()


您需要将
U
(类似
Foo.class
)的类型传递给constructor,以便它知道如何创建
U

类型的新obejct。您可以为我的代码编写类型实例的创建吗?提前谢谢。