Enumeration
を実装するのは意味がありませんIterable
。Iterable
のファクトリメソッドですIterator
。Enumeration
に類似してIterator
おり、単一の列挙の状態のみを維持します。
Enumeration
したがって、をとしてラップするように注意してIterable
ください。誰かが私を渡した場合、私はそれを繰り返し呼び出すことができ、必要な数のインスタンスを作成し、それぞれで独立して繰り返すIterable
ことができると想定します。ラップされたものはこの契約を履行しません。ラップしたものを自分のコードから逃がさないでください。(余談ですが、Java 7はこのように期待に違反しているので、「エスケープ」することも許可されるべきではないことに気づきました。)iterator()
Iterator
Enumeration
Enumeration
DirectoryStream
Enumeration
のようなものでありIterator
、ではありませんIterable
。ACollection
はIterable
です。そうでIterator
はありません。
あなたはこれを行うことはできません:
Vector<X> list = …
Iterator<X> i = list.iterator();
for (X x : i) {
x.doStuff();
}
したがって、これを行うのは意味がありません。
Vector<X> list = …
Enumeration<X> i = list.enumeration();
for (X x : i) {
x.doStuff();
}
Enumerable
に相当するものはありませんIterable
。forループで機能するものを壊さずに追加できますが、ポイントは何でしょうか。Enumerable
この新しいインターフェースを実装できるのであれば、Iterable
代わりに実装してみませんか?