[英]Instantiating generic objects in Java
是否可以像在下面的代碼片段中一樣在Java中實例化通用對象? 我知道在C#中它是可能的。 但是,我還沒有在Java中看到類似的機制。
// Let T be a generic type.
T t = new T();
不,由於類型擦除,這在Java中不起作用。 到代碼執行時,代碼不知道T
是什么。
請參閱Java Generics FAQ,了解有關Java泛型的更多信息:) - 特別參見Type Erasure部分。
如果您需要在執行時知道T
的類型,由於這個或其他原因,您可以將它存儲在Class<T>
並將其置於構造函數中:
private Class<T> realTypeOfT;
public Foo(Class<T> clazz) {
realTypeOfT = clazz;
}
然后,您可以調用newInstance()
等。
恐怕不是。 Java中的泛型類型被刪除 - 它們在編譯時使用,但在運行時不存在(這在某些地方實際上非常方便)。
您可以做的是從Class對象創建一個新實例。
Class<T> myClass;
T t = myClass.newInstance();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.