以下两个语句在初始化时有什么区别ArrayList
?
ArrayList<String> a = new ArrayList<String>();
ArrayList<String> a = new ArrayList<>();
以下两个语句在初始化时有什么区别ArrayList
?
ArrayList<String> a = new ArrayList<String>();
ArrayList<String> a = new ArrayList<>();
在 Java 1.7 之前,只允许这样一个:
ArrayList<String> a = new ArrayList<String>();
而在 1.7 中,又增加了这个,和之前一样,但更短:(所有程序员都是懒惰的)
ArrayList<String> a = new ArrayList<>();
后者使用 Java 7 中引入的推断类型。语法(称为菱形运算符)对于 Java 1.7 之前的 Collections 是非法的,因此前者用于那些早期版本。
菱形运算符减少了声明的详细程度。
没有区别。第二个选项(称为菱形运算符)是一种快捷方式。编译器会推断泛型 ArrayList 的类型参数必须是 String。
第二种选择是使用 java 7 中引入的概念 - 推断类型。除此之外,假设您使用的是 java 7,这两个调用的效果应该是相同的。在较早的 java 版本中,您不能使用代码的第二个版本。