[英]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.