I expect there are several reasons, but this probably comes down to preventing a programmer error.
One thing that is confusing is "what would be the value of obj after loop execution"? Unlike the standard for the cycle, the reinforced for each cycle does not try to make guarantees regarding its own mechanics.
, . , , for-each, , , , . , .
obj process()?