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()? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |