通常的想法是,如果这个结构不是Iterable,我就不能用forEach迭代一些结构.但为什么我可以在Java中迭代数组呢?数组不是Iterable.
MyClass[] array = {new MyClass("a"), new MyClass("b")};
for (MyClass c : array) {
System.out.println(c);
}
Run Code Online (Sandbox Code Playgroud)
原因是该语言已经允许它.虽然它可能以不同的方式表示两个对象,但迭代的顺序是相同的 - 并且效果对您来说是透明的.
...否则,Expression必须具有数组类型,
T[].设L 1 ... L m是紧接在增强的for语句之前的(可能是空的)标签序列.
增强的for语句相当于表单的基本for语句:
Run Code Online (Sandbox Code Playgroud)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之后的任何括号对.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |