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%清楚的<>
,你可以离开属于什么它空