我知道在下面的示例中使用的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