我们可以使用 AbstractList 而不是 List 接口来保存 Arraylist 实例吗?

Nic*_*che 2 java collections

一般我们使用代码来接口:

List<String> list  = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

我们可以写出以下内容吗?

AbstractList<String> list  = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

这种特殊初始化的缺点是什么?任何见解将不胜感激。

Era*_*ran 5

将列表定义为 anAbstractList会将您的实现与 的子类联系起来AbstractList,而使用该List接口允许您将该接口的list任意实现分配给变量。

定义列表 asAbstractList还可以让您访问(无需强制转换)AbstractList不属于List接口的方法,但使用它们会使您的代码不那么灵活。

如果你没有很好的理由去做,那就不要去做。