簡體   English   中英

ArrayList&lt;&gt; 與 ArrayList<Integer>

[英]ArrayList<> vs ArrayList<Integer>

ArrayList 的以下兩個聲明有什么區別?

ArrayList<Integer> nunbers = new ArrayList<Integer>();

對比

ArrayList<Integer> nunbers = new ArrayList<>();

其中一個比另一個更受歡迎嗎?

第二個有其類型參數推斷,這是 Java 7 中的一個新事物。 <>被稱為“ 鑽石”。

還要注意, 類型推斷本身在 Java 中並不新鮮,但為被實例化的泛型類推斷它的能力是新的。

Java SE 7 之前版本的編譯器能夠推斷泛型構造函數的實際類型參數,類似於泛型方法。 但是,如果使用菱形 (<>),Java SE 7 及更高版本中的編譯器可以推斷正在實例化的泛型類的實際類型參數。

我會說第二個可能是首選,只要您可以確保代碼只需要在 Java 7 上運行,因為它更清晰,並且只會減少冗余信息。

第二個減少了代碼混亂,它在 java 7 中是新的。但是你的代碼應該是

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

由於您可以對接口List進行編碼,因此推斷出實現ArrayList類型參數。

如果您的 java 編譯器的版本低於 1.7,則第二個將無法編譯。

最后一個是可用於 Java 7 或更高版本的快捷方式。

它們將編譯為完全相同的代碼,因為 Java 7 第二件事只是您可以使用的快捷方式,因為<>中的內容是 100% 清楚的,您可以將其留空

暫無
暫無

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

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