4

以下两个语句在初始化时有什么区别ArrayList

ArrayList<String> a = new ArrayList<String>();
ArrayList<String> a = new ArrayList<>();
4

4 回答 4

13

在 Java 1.7 之前,只允许这样一个:

ArrayList<String> a = new ArrayList<String>();

而在 1.7 中,又增加了这个,和之前一样,但更短:(所有程序员都是懒惰的)

ArrayList<String> a = new ArrayList<>();
于 2013-07-11T10:42:22.467 回答
4

后者使用 Java 7 中引入的推断类型。语法(称为菱形运算符)对于 Java 1.7 之前的 Collections 是非法的,因此前者用于那些早期版本。

菱形运算符减少了声明的详细程度。

于 2013-07-11T10:41:54.660 回答
3

没有区别。第二个选项(称为菱形运算符)是一种快捷方式。编译器会推断泛型 ArrayList 的类型参数必须是 String。

于 2013-07-11T10:42:05.843 回答
0

第二种选择是使用 java 7 中引入的概念 - 推断类型。除此之外,假设您使用的是 java 7,这两个调用的效果应该是相同的。在较早的 java 版本中,您不能使用代码的第二个版本。

于 2013-07-11T10:42:12.700 回答