【问题标题】:Creating new Arraylist of <type> vs new Arraylist of an empty type <> [duplicate]创建 <type> 的新 Arraylist 与空类型 <> 的新 Arraylist [重复]
【发布时间】:2016-11-08 05:27:13
【问题描述】:

像第一种方法第二种方法创建一个新的 Arraylist 之间实际上有什么区别? 您在创建时有哪些注意事项?

  1. List&lt;String&gt; myList1 = new ArrayList&lt;&gt;();
  2. List&lt;String&gt; myList1 = new ArrayList&lt;String&gt;();

【问题讨论】:

  • 在 Java 7+ 中使用第一个。引入了菱形运算符,因此您不必像第二个那样重复自己。
  • 关于那个重复的事情 - 虽然标题是相关的,但问题的实际重点是关于为什么使用 &lt;&gt; 与原始类型,而不是 &lt;&gt;&lt;TheType&gt;。跨度>
  • 对。我不知道为什么@JordiCastilla 将其标记为重复

标签: java arraylist


【解决方案1】:

它们之间唯一的区别是,第一个是使用 Java 7 中引入的 Diamond 运算符。它不能在旧版本的 java 中使用。

【讨论】:

    【解决方案2】:

    除了这个代码合法的java版本没有区别:

    List<String> myList1 = new ArrayList<>(); // works in Java 7+
    
    List<String> myList1 = new ArrayList<String>(); // works in Java 5+
    

    【讨论】:

      【解决方案3】:

      您可以在这里找到答案:https://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html in section 泛型类的类型推断和实例化 但我已经为你引用了:

      您可以替换调用构造函数所需的类型参数 具有空类型参数 () 集的泛型类 因为编译器可以从上下文推断类型参数。这 一对尖括号被非正式地称为菱形。 ...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-16
        • 2017-10-09
        • 2016-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多