gpt4 book ai didi

java - 在泛型类中创建 Java 泛型类型的实例

转载 作者:行者123 更新时间:2023-12-01 14:12:29 25 4
gpt4 key购买 nike

根据问题,Create instance of generic type in 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> ,由 @gparyani here 提出

关于java - 在泛型类中创建 Java 泛型类型的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com