ゴータムティアギ(Tyagi):
Iterable
インターフェースは、以下の方法があります。
Iterator<T> iterator();
Collection
インタフェースは延びIterable
、それはまた、同じ方法を宣言する。
私は、Javaコレクションをデザインしながら、二度同じメソッド宣言を置くことが必要だったかは疑問ですか?
トーマス・申請者:
主な理由は、Java 5です。
java.util.Collection
そのとiterator()
方法とjava.util.Iterator
Javaの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ループを支持します。