jdk中容器源码的一些疑问

ListIterator中继承了Iterator。为什么还要将Iterator的方法重载一边呢?
另外concrete collection比如:ArrayLIst为什么在extends AbstractList之后还要去 implements list呢?
不晓得哪位大侠帮我解惑

1个回答

个人看法,可能不合理,仅供参考,以上是处于可读性的角度考虑的:

1)ListIterator:提供两个方向的迭代器,如果只有hasPrevious没有hasNext,可能看起来会比较奇怪,毕竟Iterator中的hasNext的语义是“单向”的判断,并不是“向前”的判断,但是ListIterator将HasNext作为向前判断的语义了。 又由于希望调用者能够将ListIterator看做是Iterator,所以做了继承。 去掉这个方法声明实际上是可以的(在方法声明、Javadoc解释方面做进一步明确化);

2)ArrayLIst implements List,让读者比较容易能够知道是这个接口关系,或许和javadoc生成有关系(这个没有测试过)

mingxuxu
mingxuxu 我不怎么上QQ(好几周登录一次), 站内交流吧。
6 年多之前 回复
huzhanchi
huzhanchi 谢谢你的回答,当时也是觉得是从代码可读性考虑,生成javadoc这块也没试过。 大哥 能告诉我你的扣扣么,加个好友,以后常交流吧,我的qq:873625463。
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐