为什么ArrayList有"实现List"?

use*_*011 35 java collections

在Collection Framework中,我们有接口List和类AbstractList:

AbstractList implements List
Run Code Online (Sandbox Code Playgroud)

ArrayList扩展AbstractList

implements List
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么ArrayListimplements List条款?

如果,ArrayList extends AbstractList而且AbstractList implements List,我们不能说,那ArrayList implement List

Boz*_*zho 44

是.它可能已被省略.但是因此它立刻可见它是一个List.否则,需要额外点击代码/文档.我认为这就是原因 - 清晰度.

并添加Joeri Hendrickx评论的内容 - 这是为了展示ArrayList实现List.AbstractList在整个图片中只是为了方便和减少List实现之间的代码重复.

  • 不仅如此,我更喜欢这种风格,因为它有意向揭示.arraylist的目标是实现List.扩展抽象列表只是实现该目标的一种方式. (26认同)

Jul*_*les 6

这很可能是为了增加继承结构的可追溯性.这样,在浏览Javadoc等时,您不必关闭整个继承树.


Buh*_*ndi 6

我的2美分是为了保持ArrayList List 的事实.AbstractList只完成List所需的某些实现.