com Java5, podemos escrever:
Foo[] foos = ...
for (Foo foo : foos)
ou apenas usando um Iterable no loop for. Isso é muito útil.
No entanto, você não pode escrever um método genérico para iterável como este:
public void bar(Iterable<Foo> foos) { .. }
e chamando-o com uma matriz, pois não é um Iterable:
Foo[] foos = { .. };
bar(foos); // compile time error
Estou pensando nas razões por trás dessa decisão de design.
java.lang.reflect.Array
, mas seu desempenho é fraco. No entanto, você pode escrever seus próprios iteradores (ou implementações de lista!) Para agrupar matrizes de tipos primitivos, se desejar.