-1

可能重复:
在 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”。

4

1 回答 1

2

不幸的是,您不能在 java 中从泛型类型创建类。但是您可以按照 Justin Rudd 在此线程中的建议进行操作并编写:

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

所以你使用class原型来创建一个新实例。调用它可能是:

InstanceOfBase instanceOfBase = test.createMe(test.getClass)
于 2012-12-31T11:44:16.177 回答