创建泛型类的实例

时间:2012-12-31 11:40:46

标签: java generics

  

可能重复:
  Create instance of generic type in Java?

我得到了这些课程

public abstract class Base {
    public String Id = "originalId";
}

public class InstanceOfBase extends Base {
    public void setString(String test) {
        this.Id = test;
    }
}

public class UseIt {
    public Test<InstanceOfBase> test = new Test<InstanceOfBase>();

    public void run() {
        InstanceOfBase instanceOfBase = test.createMe();
        System.out.println(instanceOfBase.Id);
    }
}

public abstract class Test<E extends Base> {
    public E createMe() {
        // How do I do this?
        return new E();
    }
}

上面的代码无法编译,因为它不知道如何创建E.我怎么能实现这个?

当我调用run方法时,我希望它应该打印“originalId”。

1 个答案:

答案 0 :(得分:2)

不幸的是,您无法在java中使用泛型类创建类。但是你可以像Justin Rudd在this thread中所建议的那样写下来:

public E createMe(Class<E> clazz)
{
    return clazz.newInstance();
}

因此,您使用class原型来创建新实例。调用它可能是:

InstanceOfBase instanceOfBase = test.createMe(test.getClass)