Enumerationを実装するのは意味がありませんIterable。IterableのファクトリメソッドですIterator。Enumerationに類似してIteratorおり、単一の列挙の状態のみを維持します。
Enumerationしたがって、をとしてラップするように注意してIterableください。誰かが私を渡した場合、私はそれを繰り返し呼び出すことができ、必要な数のインスタンスを作成し、それぞれで独立して繰り返すIterableことができると想定します。ラップされたものはこの契約を履行しません。ラップしたものを自分のコードから逃がさないでください。(余談ですが、Java 7はこのように期待に違反しているので、「エスケープ」することも許可されるべきではないことに気づきました。)iterator()IteratorEnumerationEnumerationDirectoryStream
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代わりに実装してみませんか?