...
It is recommended that all enhanced for
statement loop variables be declared final
. The final
declaration causes Java compilers to flag and reject any assignments made to the loop variable, in from within the loop body.
Noncompliant Code Example
...
Code Block | ||
---|---|---|
| ||
Character[] array = new Character[10]; for(Character c: array) c = 'x'; // initialization attempt for(int i=0;i<array.length;i++) System.out.print(array[i]); // prints 10 "null"s values |
Note that if c
is declared final
, a compiler error results when an attempt is made to initialize it.
...
Code Block | ||
---|---|---|
| ||
Character[] array = new Character[10]; for(int i = 0;i<array i < array.length; i++) array[i] = 'x'; for(final Character c: array) System.out.print(c); // prints 10 "x"s values |
Risk Assessment
Attempts to assign to the loop variable from within the enhanced for
loop (for-each idiom) are futile and may leave the class in a fragile, inconsistent state.
...