用Java创建ArrayList?

use*_*254 2 java collections list arraylist

可能重复:
List与ArrayList作为引用类型?

在以下方面创建一个arraylist的区别是什么?

List listA = new ArrayList(); and ArrayList alist = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

das*_*ght 11

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

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

List listA = new LinkedList();
Run Code Online (Sandbox Code Playgroud)

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

ArrayList listA = new LinkedList(); // <<<=== INVALID
Run Code Online (Sandbox Code Playgroud)

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

List<ClassA> listA = new ArrayList<ClassA>();
Run Code Online (Sandbox Code Playgroud)


Den*_*ret 5

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

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