Muh*_*ana 4 java foreach final
考虑一下这段代码
public static void main(String[] args) {
for(final String s : Arrays.asList("a","b","c")){
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码不是用于特定目的,而是用于演示final foreach-loop变量的用法.
这是如何运作的 ?如何在单个变量中为final每个循环分配不同的值.或者这个变量在不同的范围\堆栈中多次声明?
这在Java语言规范(JLS),14.14.2中进行了解释:
增强的for语句具有以下形式:
Run Code Online (Sandbox Code Playgroud)EnhancedForStatement: for ( FormalParameter : Expression ) Statement FormalParameter: VariableModifiers_opt Type VariableDeclaratorId VariableDeclaratorId: Identifier VariableDeclaratorId []...
增强的for语句相当于表单的基本for语句:
Run Code Online (Sandbox Code Playgroud)for (I #i = Expression.iterator(); #i.hasNext(); ) { VariableModifiers_opt TargetType Identifier = (TargetType) #i.next(); Statement }
因此,Identifier在循环的每次迭代中重新声明.
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |