2014-02-18 35 views
3

有以下聲明之間有什麼區別 -指定集合元素類型,而實例創建

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

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

在這兩種情況下,無論如何,名單將只有String類型的元素。

+1

一個適用於Java <= 6,另一個不適用。 – vanza

+0

正如一個補充,文檔:http://docs.oracle.com/javase/7/docs/technotes/guides/language/type-in​​ference-generic-instance-creation.html – SWoeste

回答

5

沒有區別。然而,第一個在Java < = 7中是合法的,而第二個在Java 7中是合法的,並且是作爲簡寫符號*引入的。編譯器將從聲明中推斷泛型類型。

*它基本上被引入去除冗餘信息並減少代碼噪聲。所以,你現在有:

Map<String, List<String>> myMap = new HashMap<>(); 

與:

Map<String, List<String>> myMap = new HashMap<String, List<String>>(); 

第一個是對眼睛容易得多。