This question already has an answer here:
Method iterator() declared in java.util.Collection and in java.lang.Iterable, its superinterface?

(1个答案)


去年关闭。





我的Java版本是“ 1.8.0_192”

/**
 * Returns an iterator over the elements in this collection.  There are no
 * guarantees concerning the order in which the elements are returned
 * (unless this collection is an instance of some class that provides a
 * guarantee).
 *
 * @return an <tt>Iterator</tt> over the elements in this collection
 */
Iterator<E> iterator();


这是Collection界面。

/**
 * Returns an iterator over elements of type {@code T}.
 *
 * @return an Iterator.
 */
Iterator<T> iterator();


这是Iterable接口。

最佳答案

确实没有理由同时拥有两者。如果查看sinceCollection部分,您会看到它是在1.2中添加的,而Iterable是在1.5中添加的,因此它似乎是“历史性的”。

我们将不得不问实际的作者,为什么没有删除多余的声明。话虽如此,两个地方都没有负面影响。

不,在两者上都使用iterator方法没有特殊含义。

关于java - Collection扩展了Iterable,但是为什么Collection声明Iterable Function(与Iterable相同),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56764573/

10-12 05:49