【问题标题】:What is the difference between "new ArrayList<ClassName>()" and "new ArrayList<>()" when constructing an ArrayList?构造 ArrayList 时,“new ArrayList<ClassName>()”和“new ArrayList<>()”有什么区别?
【发布时间】:2018-05-02 20:18:51
【问题描述】:

这是一个具体的例子:

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

这两种方法似乎都可以正常工作。有什么区别?

【问题讨论】:

标签: java generics arraylist constructor


【解决方案1】:

构建时:

new ArrayList<>();

你告诉编译器Infer左侧的类型。

现在:

new ArrayList<String>();

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

【讨论】:

    【解决方案2】:

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

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

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

    从 Java 7 开始,我们可以只使用 Diamond:

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

    这就是区别,Java 的设计者想让它变得更容易。

    【讨论】:

      【解决方案3】:

      如果我记得我早期的编程课程,这是一个 syntactical sugar 特性的例子,它被添加到一个较新的 java 版本中。当你实例化 y 时,Java 会推断你的类型 String。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-07
        • 2014-07-22
        • 2017-05-08
        • 1970-01-01
        • 2013-12-20
        • 1970-01-01
        • 2019-03-15
        • 2011-06-03
        相关资源
        最近更新 更多