繁体   English   中英

为什么我可以在Java中的forEach循环中迭代数组?

[英]Why I can iterate on array in forEach loop in Java?

通常的想法是,如果这个结构不是Iterable,我就不能用forEach迭代一些结构。 但为什么我可以在Java中迭代数组呢? 数组不可Iterable

MyClass[] array = {new MyClass("a"), new MyClass("b")};

for (MyClass c : array) {
    System.out.println(c);
}

原因是该语言已经允许它。 虽然它可能以不同的方式表示两个对象,但迭代的顺序是相同的 - 并且效果对您来说是透明的。

...否则,Expression必须具有数组类型T[]

设L 1 ... L m是紧接在增强的for语句之前的(可能是空的)标签序列。

增强的for语句相当于表单的基本for语句:

 T[] #a = Expression; L1: L2: ... Lm: for (int #i = 0; #i < #a.length; #i++) { VariableModifiersopt TargetType Identifier = #a[#i]; Statement } 

#a#i是自动生成的标识符,它们与发生增强for语句的范围内的任何其他标识符(自动生成或其他标识符)不同。

TargetType是循环变量的类型,由FormalParameter中出现的Type表示,后跟FormalParameter(第10.2节)中Identifier之后的任何括号对。

原因是Java有一种内置的方法来处理每个循环中的数组。 看看这个链接

For-Each文档部分说明for-each构造也适用于数组

JLS-14.4.2增强for声明说(部分),

Expression的类型必须是Iterable或数组类型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM