Why is there a method iterator() on java.util.Collection

拥有回忆 提交于 2019-12-03 23:29:44

Backwards compatibility. Iterable was not introducted until 1.5 with the for(Object o : iterable) construct. Previously, all collections had to provide a means to iterate them.

I suspect it was just to avoid the appearance of removing a method from a documentation point of view. Although javadoc is nice it would be difficult to notice/appreicate a method being moved from one interface to a super-interface.

Note the same was done with Closeable, also introduced in 1.5.

As far as I am aware there would have been no binary compatability issues with removing the method from the Collection class.

Iterable was introduced in 1.5. Since it was part of Collection from before 1.5 that they probably just didn't remove it. And as the other contributor pointed out, it does have better JavaDoc.

I have been doing some more investigation on this and have found that the equals() and hashcode() methods are also overwritten.

Clearly the only reason for this can be to add the javadoc - maybe this is why iterator() was also overwritten.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!