使用Java5,我们可以编写:
Foo[] foos = ...
for (Foo foo : foos)
或仅在for循环中使用Iterable。这非常方便。
但是,您不能像这样编写可迭代的通用方法:
public void bar(Iterable<Foo> foos) { .. }
并使用数组调用它,因为它不是Iterable:
Foo[] foos = { .. };
bar(foos); // compile time error
我想知道这个设计决定背后的原因。
java.lang.reflect.Array
,但是其性能较弱。但是,您可以编写自己的迭代器(或List实现!)来包装基本类型的数组。