[英]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有一种内置的方法来处理每个循环中的数组。 看看这个链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.