List 和 ArrayList 有什么区别?

我最近在办公室的 android 项目中使用了 ArrayList,我对 List 和 ArrayList 有些困惑,它们有什么区别? 我应该使用什么?

我还看到了一些类似的实现。

List<SomeObject> myList = new ArrayList<SomeObject>();


ArrayList<SomeObject> myList = new ArrayList<SomeObject>();

这两种情况有什么区别?

300836 次浏览

在这两个示例中,列表实现之间没有区别。 然而,在代码中进一步使用变量 myList 的方式有所不同。

当您将列表定义为:

List myList = new ArrayList();

只能调用 List 接口中定义的方法和引用成员。 如果你把它定义为:

ArrayList myList = new ArrayList();

除了从 List 继承定义的成员之外,您还可以调用特定于 ArrayList 的方法并使用特定于 ArrayList 的成员。

尽管如此,当您在第一个示例中调用 List 接口的方法(在 ArrayList 中实现)时,将调用来自 ArrayList 的方法(因为 List 接口不实现任何方法)。

这叫多态性,你可以研究一下。