我得到了这些课程
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”。
答案 0 :(得分:2)
不幸的是,您无法在java中使用泛型类创建类。但是你可以像Justin Rudd在this thread中所建议的那样写下来:
public E createMe(Class<E> clazz)
{
return clazz.newInstance();
}
因此,您使用class
原型来创建新实例。调用它可能是:
InstanceOfBase instanceOfBase = test.createMe(test.getClass)