簡體   English   中英

我可以在泛型中使用Class嗎?

[英]Can I use Class in generics?

如果我知道數組列表運行時的數據類型,我可以在泛型中使用它嗎?

例如,我可以在下面的數組列表聲明期間使用Class(比如String.class )。

List objList = new ArrayList<DestinationClassToBeReplaced>();
List<String> objList = new ArrayList<>();

是為了做到這一點, List javadoc清楚地說明了這一點。

 Type Parameters: E - the type of elements in this list 

你可以像這樣寫:

List<DestinationClassToBeReplaced> objList = new ArrayList<>();

<>運算符稱為Diamond運算符。

上面的代碼使用JDK 7的Diamond Operator推斷泛型類的實例化參數類型

可以使用三種方式來聲明通用列表

方法1:使用泛型,即兩側

List<Integer> list = new ArrayList<Integer>();

方法2:在左側使用通用,在右側使用菱形操作符

List<Integer> list = new ArrayList<>();

方法3:僅在左側使用通用

List<Integer> list = new ArrayList(); 

在上述三種方法中,第二種方法在java 7中引入。

如果要使用泛型,則必須在左側指定類型才能使用泛型。 請注意,在編譯期間檢查泛型后,編譯器會拋棄泛型的類型限制。

僅在右側添加通用將無助於您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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