当接口 java.util.Collection 已经扩展了定义了这个方法的 java.util.Iterable 时,为什么还要在接口 java.util.Collection 上定义方法 iterator() 。
我正在考虑某种向后兼容性,或者有机会在集合级别的方法上编写一些 JavaDoc。
还有其他想法吗?
当接口 java.util.Collection 已经扩展了定义了这个方法的 java.util.Iterable 时,为什么还要在接口 java.util.Collection 上定义方法 iterator() 。
我正在考虑某种向后兼容性,或者有机会在集合级别的方法上编写一些 JavaDoc。
还有其他想法吗?
向后兼容性。Iterable 直到 1.5 才通过 for(Object o : iterable) 构造引入。以前,所有集合都必须提供一种迭代它们的方法。
我怀疑这只是为了避免从文档的角度删除方法的出现。尽管 javadoc 很好,但很难注意到/欣赏从一个接口移动到超级接口的方法。
请注意,同样在 1.5 中引入的 Closeable 也是如此。
据我所知,从 Collection 类中删除该方法不会出现二进制兼容性问题。
我对此进行了更多调查,发现 equals() 和 hashcode() 方法也被覆盖了。
显然,这样做的唯一原因可能是添加 javadoc - 也许这就是 iterator() 也被覆盖的原因。
可迭代是在 1.5 中引入的。由于它是 1.5 之前的 Collection 的一部分,因此他们可能只是没有将其删除。正如另一位贡献者所指出的,它确实有更好的 JavaDoc。