Java foreach声明中的字段赋值

kra*_*tan 3 java foreach

我知道以下示例中使用的foreach循环无法编译.但有人知道为什么不允许在foreach循环声明中使用字段?

public class Foo {
    private Object obj;

    public void run(List<Object> objects) {
        for (obj : objects) {
            process();
        }
    }

    private void process() {
        // do something with obj
    }
}
Run Code Online (Sandbox Code Playgroud)

Pét*_*rök 7

可能是因为它

  • 限制循环变量的范围(从而使代码更清晰,并避免可能的细微错误),以及
  • 简化了编译器的解析.

  • @Rich:无论如何都很难适应当前的语义,因为你当前保证元素的顺序与集合迭代器的顺序相同.我认为并行化要么会破坏,要么通过过度同步无用. (3认同)