加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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()?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读