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

使い所があまりないとは思うが、
ついでに、与えられた配列に対する反復子を返すIterable実装を返すメソッドiterableも書いておく。
これも配列からIterator実装を返すメソッドが定義されたクラスと同じクラス内で定義している。
仲介メソッドiterator_の意味についても前記事と同じである。

...snip
    private static <E> Iterator<E> iterator_(E[] array) {
        return iterator(array);
    }

    public static <E> Iterable<E> iterable(final E[] array) {
        return new Iterable<E>() {
            public Iterator<E> iterator() {
                return iterator_(array);
            }
        };
    }
...snip