ArrayList的兩個聲明有什麼區別?ArrayList <> vs ArrayList <Integer>
ArrayList<Integer> nunbers = new ArrayList<Integer>();
VS
ArrayList<Integer> nunbers = new ArrayList<>();
就是其中之一優於其他?
ArrayList的兩個聲明有什麼區別?ArrayList <> vs ArrayList <Integer>
ArrayList<Integer> nunbers = new ArrayList<Integer>();
VS
ArrayList<Integer> nunbers = new ArrayList<>();
就是其中之一優於其他?
第二個擁有類型參數inferred,這是Java 7 <>
一個新東西叫做「the diamond」。
還要注意的是,type inference itself is not new in Java,但推斷它爲被實例化的泛型類的能力是新的。
來自Java SE 7之前版本的編譯器能夠推斷泛型構造函數的實際類型參數,類似於泛型方法。但是,如果您使用菱形(<>),Java SE 7及更高版本中的編譯器可以推斷實例化的泛型類的實際類型參數。
我想說第二個可能是首選,只要你能確保代碼只需要在Java 7上運行,因爲它更清晰,並且只會減少冗餘信息。
如果你的java編譯器的版本低於1.7,第二個將不會編譯。
最後一個是可用於Java版本7或更新版本的快捷方式。
第二個減少代碼的混亂,它是在Java 7新的,但你的代碼應該是
List<Integer> nunbers = new ArrayList<>();
既然你可以編寫到接口List
,實施ArrayList
的類型參數是推斷出來的。
他們將編譯到完全相同的代碼,因爲Java 7的第二件事就是你可以使用一個快捷方式,因爲它是100%清楚的<>
,你可以離開屬於什麼它空