3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
主要原因是Java 5。
java.util.Collection
其iterator()
方法和java.util.Iterator
自Java 1.2的存在。
當(dāng)他們想在Java 5中引入增強(qiáng)的for循環(huán)時(shí)(一種方法for (String s: ...) {}
,他們需要一種java.util.Iterator
從未實(shí)現(xiàn)的類創(chuàng)建a的方法java.util.Collection
。決定引入一個(gè)新的接口java.lang.Iterable
,該接口可以由所有希望支持的類實(shí)現(xiàn)。增強(qiáng)的for循環(huán)。
為了使現(xiàn)有的java.util.Collection
及其所有后代接口和類與增強(qiáng)的for循環(huán)兼容,它們進(jìn)行了java.util.Collection
extend java.lang.Iterable
。
因此,這兩個(gè)接口都有一個(gè)方法iterator()
-java.util.Collection
因?yàn)樗恰暗谝粋€(gè)誕生的”,java.lang.Iterable
用于支持增強(qiáng)的for循環(huán)。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
重新定義接口方法是一種常見的做法,它允許子接口完善由超級(jí)接口定義的協(xié)定。
Iterable
的iterator()
返回在某種類型的元素上的迭代器。
Collection
的會(huì)iterator()
在的元素上返回一個(gè)迭代器Collection
,而無需保證順序。
List
的iterator()
回報(bào)過的元件進(jìn)行迭代的迭代List
以正確順序。
這意味著,如果你執(zhí)行的是iterator()
一些類的實(shí)現(xiàn)方法Collection
,你應(yīng)該遵循合同Collection
的iterator()
,這比更具體Iterable
的iterator()
合同。如果您的類還實(shí)現(xiàn)了List
,你應(yīng)該遵循的更加具體的合同List
的iterator()
。
添加回答
舉報(bào)