簡體   English   中英

在Java中實例化通用對象

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM