3 回答
TA贡献1847条经验 获得超11个赞
主要原因是Java 5。
java.util.Collection
其iterator()
方法和java.util.Iterator
自Java 1.2的存在。
当他们想在Java 5中引入增强的for循环时(一种方法for (String s: ...) {}
,他们需要一种java.util.Iterator
从未实现的类创建a的方法java.util.Collection
。决定引入一个新的接口java.lang.Iterable
,该接口可以由所有希望支持的类实现。增强的for循环。
为了使现有的java.util.Collection
及其所有后代接口和类与增强的for循环兼容,它们进行了java.util.Collection
extend java.lang.Iterable
。
因此,这两个接口都有一个方法iterator()
-java.util.Collection
因为它是“第一个诞生的”,java.lang.Iterable
用于支持增强的for循环。
TA贡献1851条经验 获得超5个赞
重新定义接口方法是一种常见的做法,它允许子接口完善由超级接口定义的协定。
Iterable
的iterator()
返回在某种类型的元素上的迭代器。
Collection
的会iterator()
在的元素上返回一个迭代器Collection
,而无需保证顺序。
List
的iterator()
回报过的元件进行迭代的迭代List
以正确顺序。
这意味着,如果你执行的是iterator()
一些类的实现方法Collection
,你应该遵循合同Collection
的iterator()
,这比更具体Iterable
的iterator()
合同。如果您的类还实现了List
,你应该遵循的更加具体的合同List
的iterator()
。
添加回答
举报