167

我最近在办公室的 android 项目中一直在使用 ArrayList,我对 List 和 ArrayList 有点困惑,两者有什么区别,我应该使用什么?

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

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

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

这两个实例有什么区别?

4

1 回答 1

177

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

当您将列表定义为:

List myList = new ArrayList();

您只能调用 List 接口中定义的方法和引用成员。如果您将其定义为:

ArrayList myList = new ArrayList();

您将能够调用特定于 ArrayList 的方法并使用特定于 ArrayList 的成员,以及那些定义从 List 继承的成员。

然而,当您在第一个示例中调用 List 接口的方法时,该方法在 ArrayList 中实现,来自 ArrayList 的方法将被调用(因为 List 接口没有实现任何方法)。

这叫做多态性。你可以阅读它。

于 2013-02-15T20:58:42.593 回答