Java5 では次のように記述できます:
Foo[] foos = ...
for (Foo foo : foos)
または、 for ループで Iterable を使用するだけです。 これは非常に便利です。
ただし、次のように iterable のジェネリック メソッドを記述することはできません。
public void bar(Iterable<Foo> foos) { .. }
Iterable ではないため、配列で呼び出します。
Foo[] foos = { .. };
bar(foos); // compile time error
この設計上の決定の背後にある理由が気になります。
ベストアンサー1
Cloneable
配列はインターフェース (および)を実装できますjava.io.Serializable
。では、なぜできないのでしょうかIterable
。 はメソッドIterable
の追加を強制しますiterator
が、配列はメソッドを実装しません。 はchar[]
をオーバーライドすらしません。toString
とにかく、参照の配列は理想的ではないと考えるべきです - を使用してくださいList
。dfa のコメントとして、Arrays.asList
は明示的に変換を行います。
(そうは言っても、clone
配列を呼び出すことは可能です。)