Обычно для каждого цикла используется обычная форма:
for(Foo bar: bars){
bar.doThings();
}
Но если я хочу сохранить бар до цикла, я не могу использовать для каждого цикла:
Foo bar = null;
// - Syntax error on token "bar", Identifier expected after this token
for(bar: bars){
if(bar.condition())
break;
}
bar.doThings();
В цикле for получена синтаксическая ошибка, упомянутая выше.
Почему это? Меня не интересуют обходные пути, но просто любопытно соображения, лежащие в основе этого ограничения.
В отличие от обычного цикла, переменная может быть объявлена вне или вообще не...
int i = 1;
for(;i<max;i++){
for(;;){
// Do things
}
}