用Java5我们可以写:
Foo[] foos = ...
for (Foo foo : foos)
Run Code Online (Sandbox Code Playgroud)
或者只是在for循环中使用Iterable.这非常方便.
但是你不能像这样为iterable编写泛型方法:
public void bar(Iterable<Foo> foos) { .. }
Run Code Online (Sandbox Code Playgroud)
并使用数组调用它,因为它不是Iterable:
Foo[] foos = { .. };
bar(foos); // compile time error
Run Code Online (Sandbox Code Playgroud)
我想知道这个设计决定背后的原因.