3
有以下聲明之間有什麼區別 -指定集合元素類型,而實例創建
List<String> list = new ArrayList<String>();
和
List<String> list = new ArrayList<>();
在這兩種情況下,無論如何,名單將只有String類型的元素。
有以下聲明之間有什麼區別 -指定集合元素類型,而實例創建
List<String> list = new ArrayList<String>();
和
List<String> list = new ArrayList<>();
在這兩種情況下,無論如何,名單將只有String類型的元素。
沒有區別。然而,第一個在Java < = 7中是合法的,而第二個在Java 7中是合法的,並且是作爲簡寫符號*引入的。編譯器將從聲明中推斷泛型類型。
*它基本上被引入去除冗餘信息並減少代碼噪聲。所以,你現在有:
Map<String, List<String>> myMap = new HashMap<>();
與:
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
第一個是對眼睛容易得多。
一個適用於Java <= 6,另一個不適用。 – vanza
正如一個補充,文檔:http://docs.oracle.com/javase/7/docs/technotes/guides/language/type-inference-generic-instance-creation.html – SWoeste