gpt4 book ai didi

java - 为什么 Iterable 和 Iterator 在不同的包中?

转载 作者:搜寻专家 更新时间:2023-10-30 21:40:39 26 4
gpt4 key购买 nike

Iterable<E>java.langIterator<E>java.util .这是否有充分的理由,或者这仅仅是糟糕设计的产物?

这似乎很奇怪,因为唯一一个 Iterable<E>有利于提供 Iterator<E> .

编辑:一个潜在的原因是(then-)新引入的 for-each 循环。我想我的问题是,它们是等价的吗?

for(Object o : collection)
...
vs
for( Iterator iter = collection.iterator(); iter.hasNext(); ) {
o = iter.next();
...

如果是,那仍然不能解释为什么这两个类在不同的包中,因为编译器必须导入 java.util无论如何使用 Iterator构造。

最佳答案

一部分是历史:IteratorJDK 1.2 以来一直伴随着我们,Iterable 伴随着 JDK 1.5 . Iterable 带有增强的 for 循环。

糟糕的设计?不,进化。没有无所不知的创造者。随着经验教训的吸取,它们被合并到 JDK 中。

关于java - 为什么 Iterable<E> 和 Iterator<E> 在不同的包中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6906215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com