Java中为什么array不能给Iterable对象赋值?

问题:

用Java5我们可以写:

Foo[] foos = ...
for (Foo foo : foos) 

或者只是在for循环中使用Iterable。这很方便。
但是,您不能像这样编写一个可迭代的通用方法:

public void bar(Iterable<Foo> foos) { .. }

并使用数组调用它,因为它不是一个Iterable:

Foo[] foos = { .. };
bar(foos);  // compile time error 

我想知道这个设计决策背后的原因。

回答:

数组可以实现接口(Cloneablejava.io.Serializable)。那么为什么不Iterable?我猜Iterable强制添加iterator方法,数组不实现方法。 char[]甚至不覆盖toString。无论如何,引用数组应该被认为不太理想 – 使用List。正如dfa所言,Arrays.asList将明确地为您进行转换。
(话虽如此,你可以在数组上调用clone。)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why is an array not assignable to Iterable?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

84 − 83 =