列挙子の実装を反復子のインタフェイスで扱う #2

使ってみる。
以下は例によってiteratorメソッドを定義しているクラス内で定義されたメソッド内での例である。
クラス外で使うのならiteratorメソッドが定義されているクラス名を付けてiterator()を呼び出す必要がある。
もう一つ、Vectorの生成にJDK7で導入されたダイヤモンド記法を使っているので、
JDK6以下では<>の中にちゃんと型*1を書かないといけない。

...snip
        for (
            Iterator<String> i = iterator(new java.util.Vector<>(java.util.Arrays.asList("Alice", "Bob", "Carol")).elements());
            i.hasNext();
        ) {
            System.out.println(i.next());
        }
...snip
        for (
            Iterator<String> i = iterator(new String[]{"Alice", "Bob", "Carol"});
            i.hasNext();
        ) {
            System.out.println(i.next());
        }
...snip

配列の使用例は、このように書くくらいなら拡張for文で素直に書いた方がいいとは思う。
という点で例として不適切なのかも。
Vectorの方もご同様と言われそうだが、
この場合elements()で得られるEnumerationに用があるだけなので悪くはないだろう。

*1:例だとString