以下两个语句在初始化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,因此前者用于那些早期版本之前是集合非法的。
钻石操作员减少了声明的冗长度。
没有区别。第二种选择(称为钻石操作员)是一种捷径。编译器会推断通用ArrayList的类型参数必须是String。
第二种选择是使用在java 7推出的类型中引入的概念。除此之外,假设你使用的是java 7,这两个调用的效果应该是相同的。在较早的java版本中,您不能使用第二版的代码。
好。第一个是允许在Java 6中,而第二个是允许在Java 7中,我也很想知道它的详细原因 –
@PrasadKharkar你的意思是“_second one_不允许在Java 6中”,对吧? – fge
@fge耶在评论时犯了愚蠢的错误。我的意思是。 Java 6不允许第二个版本和Java 7允许它。 –