是否可以在Java中创建泛型类型的实例?我正在考虑基于我所看到的答案是no
(由于类型擦除),但如果有人能看到我缺少的东西,我会感兴趣:
class SomeContainer<E>
{
E createContents()
{
return what???
}
}
发布于 2018-10-12 10:40:09
需要某种抽象的工厂来推卸责任:
interface Factory<E> {
E create();
}
class SomeContainer<E> {
private final Factory<E> factory;
SomeContainer(Factory<E> factory) {
this.factory = factory;
}
E createContents() {
return factory.create();
}
}
发布于 2018-10-12 12:16:54
这是我提出的一个选项,它可能会有所帮助:
public static class Container<E> {
private Class<E> clazz;
public Container(Class<E> clazz) {
this.clazz = clazz;
}
public E createContents() throws Exception {
return clazz.newInstance();
}
}
或者可以使用这个构造函数(但它需要一个E实例):
@SuppressWarnings("unchecked")
public Container(E instance) {
this.clazz = (Class<E>) instance.getClass();
}
https://stackoverflow.com/questions/-100000848
复制相似问题