簡體   English   中英

在Java的Collections對象中兩次聲明類型參數

[英]Declaring type parameter twice in Collections objects in Java

我一直在學習Java(使用Java 6),並且注意到創建了Collections對象(例如ArrayList )時,必須同時在引用類型和對象類型中聲明type參數。 僅在引用類型中聲明type參數會更容易嗎? 還是存在類型參數可能不同的情況?

例如,( String )下面的type參數必須聲明兩次。

List<String> aList = new ArrayList<String>();

Java 7還引入了“鑽石”形式 ,該形式可以推斷出類型並允許您編寫更少的冗長代碼。

如果該類的類型參數列表為空(菱形形式為“ <>”),則推斷該類的類型參數。 盡管在樣式上強烈建議不要在鑽石的“ <”和“>”之間留有空格,這是合法的。

因此,您可以編寫:

List<String> aList = new ArrayList<>();

這里有一些例子

查看https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained 靜態構造函數

在JDK 7之前,構造新的通用集合需要令人不愉快的代碼重復:

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

我認為我們都可以同意這是令人不愉快的。 Guava提供了使用泛型來推斷右側類型的靜態方法:

List<TypeThatsTooLongForItsOwnGood> list = Lists.newArrayList();
Map<KeyType, LongishValueType> map = Maps.newLinkedHashMap();

可以肯定的是,JDK 7中的菱形運算符使此工作不再那么麻煩:

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

暫無
暫無

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

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