【问题标题】:What is the difference in declaring collections as an object and as an interface in Java? [duplicate]在 Java 中将集合声明为对象和接口有什么区别? [复制]
【发布时间】:2016-01-25 11:57:46
【问题描述】:

如果我说有区别吗:

List<String> names = new ArrayList<String>(); 

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

【问题讨论】:

  • 您是否实施了这两种变体并比较了结果?

标签: java collections


【解决方案1】:

是的,有区别。

(首选)第一种情况让您可以对您的集合进行操作,无论列表概念的具体实现是什么。然后,您可以进一步使用另一种具体类型,同时以下代码保持有效。

在第二种情况下,您可能会想使用具体类型的一些特定方法,然后更改实例化可能会影响更多代码,并使其更难以发展。

【讨论】:

    【解决方案2】:

    有区别。第一行比第二行更笼统。

    例如,如果您有一个将List&lt;String&gt; 作为输入参数的方法,则您只能传递List&lt;String&gt; 而不能传递ArrayList&lt;String&gt;

    如果你不需要使用 ArrayList 特定的方法,你应该使用第一行!

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2019-03-02
      • 2012-04-28
      • 2011-09-18
      • 2012-12-30
      • 2010-11-13
      • 2013-02-17
      相关资源
      最近更新 更多