[英]Create instance of generic type in Java within the generic class
根据问题, 在Java中创建泛型类型的实例?
在撰写本文时,发现最佳答案是...
private static class SomeContainer<E> {
E createContents(Class<E> clazz) {
return clazz.newInstance();
}
}
但是答案仅适用于SomeContainer.createContents("hello");
我的条件是将类作为内部类放入通用类中,然后代码应像这样。
SomeContainer<T>.createContents(T);
那会产生编译时错误。 也没有为T
创建任何引用。 有什么方法可以在泛型类中创建完全新的T
对象?
提前致谢
由于在Java中实现了泛型,因此必须传递Class<T>
对象以供进一步使用。
这是示例:
public class Outer<E> {
private static class Inner<E> {
E createContents(Class<E> clazz) {
try {
return clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
return null;
}
}
}
private Class<E> clazz;
private Inner<E> inner;
public Outer(Class<E> clazz) {
this.clazz = clazz;
this.inner = new Inner<>();
}
public void doSomething() {
E object = inner.createContents(clazz);
System.out.println(object);
}
}
您也可以使用<? extends E>
<? extends E>
,由@gparyani 在这里提出
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.