有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无法在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的新实例

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

    在实例化用户时,需要指定类型。该类型必须是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>();
      }
    }