我知道在下面的示例中使用的foreach循环无法编译。但是有谁知道为什么在foreach循环声明中不允许使用字段?Java的foreach声明中的字段赋值
public class Foo {
private Object obj;
public void run(List<Object> objects) {
for (obj : objects) {
process();
}
}
private void process() {
// do something with obj
}
}
我同意字段描述对象的状态。但是,如果该类的实例只在Web应用程序的请求期间存在,则使用字段而非局部变量非常合适。 – kraftan 2010-10-06 19:21:05
@kraftan事情是,循环本身仍然是本地的一个方法调用。因此,循环中使用的变量也应该是本地的。最大限度地减少事物的范围(包括变量)是很好的设计,并且考虑到许多潜在的问题,这将有可能引入(如果你不使用该领域,将会有可怕的线程安全问题)明智地选择不允许这样的事情。我怀疑它甚至被考虑。 – ColinD 2010-10-06 21:02:00
我同意。一般来说不允许这样的事情绝对是明智的。 – kraftan 2010-10-07 06:43:54