なぜ両方の反復処理可能とコレクションのインターフェイスでiteratorメソッドの存在はありますか?

ゴータムティアギ(Tyagi):

Iterableインターフェースは、以下の方法があります。

 Iterator<T> iterator();

Collectionインタフェースは延びIterable、それはまた、同じ方法を宣言する。

私は、Javaコレクションをデザインしながら、二度同じメソッド宣言を置くことが必要だったかは疑問ですか?

トーマス・申請者:

主な理由は、Java 5です。

java.util.Collectionそのとiterator()方法とjava.util.IteratorJavaの1.2以来存在しています。

彼らは、Java 5で拡張forループを導入したい場合には(一つはfor (String s: ...) {}、彼らが作成する方法必要なjava.util.Iteratorクラスからは実装していないことをjava.util.Collection。決定は新しいインターフェイスを導入しましたjava.lang.Iterableサポートするすべてのクラスによって実装することができます拡張forループ。

既存作るためにjava.util.Collection拡張forループと互換性があり、そのすべての子孫のインタフェースおよびクラスを、彼らが作っjava.util.Collection延ばしますjava.lang.Iterable

したがって、両方のインターフェイスは、メソッドを持っているiterator()- java.util.Collectionそれは、「最初に生まれた」ので、java.lang.Iterable拡張forループを支持します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=172635&siteId=1