【问题标题】:Difference between usage of Interfaces and implementation classes in Java [duplicate]Java中接口和实现类的用法之间的区别[重复]
【发布时间】:2011-03-23 14:19:03
【问题描述】:

可能重复:
Type List vs type ArrayList in Java

为什么建议这样做:

List<String> myArrayList = new ArrayList<String>

或与 Map 接口和 HashMap 类相同

而不是:

ArrayList<String> myArrayList = new ArrayList<String>

【问题讨论】:

    标签: java class interface


    【解决方案1】:

    因为myArrayList 变量的使用代码不会绑定到此接口的特定实现。

    【讨论】:

      【解决方案2】:

      第一行(首选)你说你的代码需要一个 List,第二行你说你的代码需要一个 ArrayList。通常,您可以在周围放置变量实例。如果您现在出于某种原因更改 myArrayList 实例,您将不得不更改太多代码。

      【讨论】:

        【解决方案3】:

        你不应该使用:

        List<String> myArrayList = new ArrayList<String>
        

        为什么你应该使用 List 而不是 ArrayList 类型(除非你真的需要 List 接口中缺少的 ArrayList 的功能)已经在另一个答案中解释了。

        但我认为使用专有名称更为重要。因此,如果您使用 List 作为变量的类型,则名称不应表明它是 ArrayList。如果名称表明使用了变量就更好了。

        是的,这很挑剔。但是使用好名字会让同事在一年后更容易理解代码。

        【讨论】:

          猜你喜欢
          • 2013-03-29
          • 2019-10-24
          • 2011-04-07
          • 1970-01-01
          • 2014-05-16
          • 2010-10-17
          • 2011-12-28
          • 1970-01-01
          • 2014-03-15
          相关资源
          最近更新 更多