列挙子の実装を反復子のインタフェイスで扱う #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