用 Java5我们可以写:
Foo[] foos = ...
for (Foo foo : foos)
或者只是在 for 循环中使用 Iterable。
然而,你不能像下面这样为迭代编写一个通用的方法:
public void bar(Iterable<Foo> foos) { .. }
并使用数组调用它,因为它不是 Iterable:
Foo[] foos = { .. };
bar(foos); // compile time error
我想知道这个设计决定背后的原因。