问题描述
ListIterator中继承了Iterator。为什么还要将Iterator的方法重载一边呢?另外concrete collection比如:ArrayLIst为什么在extends AbstractList之后还要去 implements list呢?不晓得哪位大侠帮我解惑
解决方案
个人看法,可能不合理,仅供参考,以上是处于可读性的角度考虑的:1)ListIterator:提供两个方向的迭代器,如果只有hasPrevious没有hasNext,可能看起来会比较奇怪,毕竟Iterator中的hasNext的语义是“单向”的判断,并不是“向前”的判断,但是ListIterator将HasNext作为向前判断的语义了。 又由于希望调用者能够将ListIterator看做是Iterator,所以做了继承。 去掉这个方法声明实际上是可以的(在方法声明、Javadoc解释方面做进一步明确化);2)ArrayLIst implements List,让读者比较容易能够知道是这个接口关系,或许和javadoc生成有关系(这个没有测试过)
时间: 2024-10-22 16:05:11