Mit Java5 können wir schreiben:
Foo[] foos = ...
for (Foo foo : foos)
oder einfach ein Iterable in der for-Schleife verwenden. Das ist sehr praktisch.
Sie können jedoch keine generische Methode für iterable wie folgt schreiben:
public void bar(Iterable<Foo> foos) { .. }
und es mit einem Array aufrufen, da es kein Iterable ist:
Foo[] foos = { .. };
bar(foos); // compile time error
Ich frage mich über die Gründe für diese Designentscheidung.
java.lang.reflect.Array
jedoch die Leistung schwach ist. Sie können jedoch Ihre eigenen Iteratoren (oder Listenimplementierungen!) Schreiben, um Arrays primitiver Typen zu verpacken, wenn Sie möchten.