Когда мы пишем for
цикла в ней был улучшен вид перебрать контейнер (т.е. массив или коллекция), мы обычно всегда итерация с самого начала к концу. Это утверждение имеет вид:
for (Type VariableDeclaratorId : Expression)
Statement
Тип Type
выражения должен быть определен и как или типа Iterable
массива или ошибка времени компиляции происходит. Причина, по которой мы должны объявить новый идентификатор переменной с конкретным типом в выражении цикла for-for, заключается в том, что он ограничивает объем идентификатора переменной внутри тела цикла, обеспечивая более clarity and safety.
Согласно the java language specification: 14.14.2 The enhanced for statement
улучшенный утверждение эквивалентно основной для постановки форма:
for (I #i = Expression.iterator(); #i.hasNext();) {
VariableModifiers_opt
TargetType Identifier =
(TargetType) #i.next();
Statement
}
#i
является автоматически генерируетсяидентификатор, который является отдельными из любых других идентификаторов (автоматически сгенерированных или иным образом), которые находятся в области (раздел 6.3) в точке, где выполняется оператор расширенного доступа.
Huh. Я никогда не пытался использовать for-each без объявления переменной итерации в круглых скобках. Я никогда не видел ничего явно, говоря, что вам нужно это делать, но, видимо, вы это делаете. – user2357112