开发者

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

Why is there the method iterator() defined on the interface java.util.Collection when it already extends java.util.Iterable which has this very method defined.

I'm thinking some sort of 开发者_如何学编程backward compatability or an opportunity to write some JavaDoc on the method at the collection level.

Any other ideas?


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜