Java foreach声明中的字段赋值
发布时间:2020-12-15 04:53:09  所属栏目:Java  来源:网络整理 
            导读:我知道以下示例中使用的foreach循环无法编译.但有人知道为什么不允许在foreach循环声明中使用字段? public class Foo { private Object obj; public void run(ListObject objects) { for (obj : objects) { process(); } } private void process() { // do
                
                
                
            | 
                         
 我知道以下示例中使用的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
    }
}
解决方法
 我希望有几个原因,但它可能只是为了防止程序员错误. 
  
  
        令人困惑的一件事是“循环执行后obj的价值是什么”?与标准for循环不同,增强的for-each循环并不试图保证自己的机制. 另一件事是实例字段代表对象的状态.通过在for-each循环中使用实例字段,您要说的是对象可以从一个状态更改为一个或多个中间状态,然后在单个操作过程中更改为最终状态.这只是糟糕的设计,值得预防. 为什么不将obj作为参数传递给process()? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
