huzhanchi 2014-03-10 21:05
浏览 206
已采纳

jdk中容器源码的一些疑问

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

  • 写回答

1条回答 默认 最新

  • mingxuxu 2014-03-11 09:33
    关注

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?