以下两个声明 ArrayList 的方式有什么不同?
ArrayList<Integer> nunbers = new ArrayList<Integer>();
对比
ArrayList<Integer> nunbers = new ArrayList<>();
它们中的一个比另一个更受欢迎吗?
<>
被称为“the diamond”。我认为只要确保代码仅需要在Java 7上运行,第二种方法可能更受欢迎,因为它更清晰,只减少了冗余信息。与通用方法类似,Java SE 7之前的版本的编译器能够推断通用构造函数的实际类型参数。然而,在Java SE 7及更高版本中,如果使用钻石(<>),则可以推断正在实例化的通用类的实际类型参数。
List<Integer> nunbers = new ArrayList<>();
由于你可以编写接口List
的代码,因此实现ArrayList
的类型参数被推断出来。
它们将编译成完全相同的代码,自从Java 7以来,第二个事情只是一个快捷方式,您可以使用它,因为显然百分之百知道属于<>
的内容,所以可以将其留空。