【问题标题】:Creating an ArrayList in Java? [duplicate]在 Java 中创建一个 ArrayList? [复制]
【发布时间】:2012-10-05 14:10:51
【问题描述】:

可能重复:
List versus ArrayList as reference type?

以下方式创建arraylist有什么区别?

List listA = new ArrayList(); and ArrayList alist = new ArrayList();

【问题讨论】:

    标签: java list collections arraylist


    【解决方案1】:

    第一个将列表分配给由其接口定义的变量,第二个按类定义变量。

    第一个声明将让您稍后更改实现:

    List listA = new LinkedList();
    

    是有效的,而第二个不会让你改变实现:

    ArrayList listA = new LinkedList(); // <<<=== INVALID
    

    值得注意的是,从Java 5开始List是泛型类型,所以应该指定类型参数来提高类型安全性:

    List<ClassA> listA = new ArrayList<ClassA>();
    

    【讨论】:

      【解决方案2】:

      在第一种情况下,您使用listA 将列表的实现隐藏到代码中。

      这通常是推荐的,因为它(几乎)可以确保您以后可以更改为另一种类型的列表,而无需检查代码其他部分的依赖关系:使用 listA 的代码不使用特定于 ArrayList 的任何内容类,但仅限于 List 接口中定义的内容。

      【讨论】:

        【解决方案3】:

        这是一个被广泛讨论的问题:)

        您应该使用接口而不是具体类,因为您可以在任何时间点轻松更改实现

        只有在你想访问具体类的特定功能时才应该使用该类

        【讨论】:

          【解决方案4】:

          都是一样的,只是引用类型不同。

          在引用对象时,您应该始终使用接口(如 List),而不是像 ArrayList 这样的具体实现。

          【讨论】:

            猜你喜欢
            • 2013-06-02
            • 1970-01-01
            • 1970-01-01
            • 2011-05-03
            • 1970-01-01
            • 2015-07-19
            • 2021-07-26
            • 2014-12-26
            • 1970-01-01
            相关资源
            最近更新 更多