构造ArrayList时,“new ArrayList <classname>()”和“new ArrayList&lt;&gt;()”之间有什么区别?

时间:2018-05-02 20:18:51

标签: java generics arraylist constructor

这是一个具体的例子:

  ArrayList<String> x = new ArrayList<String>();
  ArrayList<String> y = new ArrayList<>();

两种方式似乎都很好。有什么区别?

3 个答案:

答案 0 :(得分:2)

没有区别,我可以称之为新功能。

我们必须在Java 7之前指定类型参数:

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

从Java 7我们可以使用Diamond:

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

这就是差异,Java的设计师希望让它变得更容易。

答案 1 :(得分:2)

构建时:

new ArrayList<>();

您告诉编译器{@ 1}}左侧的类型。

现在:

Infer

明确声明您打算使用的类型。

答案 2 :(得分:1)

如果我从早期的编程类中记得,这是在较新版本的java中添加的syntactical sugar功能的示例。当您实例化y时,Java会推断您输入String。