ArrayList<>与ArrayList<Integer>的区别

19

以下两个声明 ArrayList 的方式有什么不同?

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

对比

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

它们中的一个比另一个更受欢迎吗?

5个回答

27
第二种类型参数为inferred,这是Java 7中的新功能。 <> 被称为“the diamond”。
还要注意,type inference itself is not new in Java,但是推断泛型类被实例化的能力是新的。

与通用方法类似,Java SE 7之前的版本的编译器能够推断通用构造函数的实际类型参数。然而,在Java SE 7及更高版本中,如果使用钻石(<>),则可以推断正在实例化的通用类的实际类型参数。

我认为只要确保代码仅需要在Java 7上运行,第二种方法可能更受欢迎,因为它更清晰,只减少了冗余信息。

4
第二个减少了代码的混乱,这是Java 7中新增的功能。但是你的代码应该是:
List<Integer> nunbers = new ArrayList<>();

由于你可以编写接口List的代码,因此实现ArrayList的类型参数被推断出来。


3
如果您的Java编译器版本低于1.7,则第二个不会编译通过。

3
最后一种方法是使用Java 7或更新版本的快捷方式。

3

它们将编译成完全相同的代码,自从Java 7以来,第二个事情只是一个快捷方式,您可以使用它,因为显然百分之百知道属于<>的内容,所以可以将其留空。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接