在Java中创建ArrayList?

在Java中创建ArrayList?,java,list,collections,arraylist,Java,List,Collections,Arraylist,可能重复: 用以下方法创建arraylist有什么区别 List listA = new ArrayList(); and ArrayList alist = new ArrayList(); 在第一种情况下,使用listA将列表的实现隐藏到代码中 这通常是推荐的,因为它(几乎)确保您以后可以更改为另一种类型的列表,而无需检查代码其他部分中的依赖项:使用listA的代码不使用任何特定于ArrayList类的内容,而只使用list接口中定义的内容。首先将列表分配给其接口定义的变量,第二个按类定

可能重复:

用以下方法创建arraylist有什么区别

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

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


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

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

第一个声明将允许您在以后更改实现:

List listA = new LinkedList();
有效,而第二个选项不允许您更改实现:

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

这是一个长期讨论的问题:)

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


当您想要访问该类的特定功能时,您应该只使用具体类。它是相同的,只是引用类型不同

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

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