Javaがローカルクラスの仕様を決めたとき、ローカル変数をわざわざfinalな変数に絞ったのには、なにか合理的な理由があるはずだと思うので、それを推測するコーナー。(あくまでも「推測」なので、証拠を出せとか言われても困ります。) - まず、ローカル変数がスタック上に取られるからという案は、却下です。サンデープログラマが趣味で書いた処理系でもあるまいし、そんなことが技術的な制限になるとはちょっと考えられない。 - 前提として留意しておきたいのは、Javaが構文糖衣に対して非常に保守的だということ。理由はよく分かりませんが、とにかく新しい構文糖衣を導入することに対して、慎重なようです。想像するに、構文糖衣というものに対して、プログラマから見えないところで直感的でない変換が行われることがあるため、プログラムの不確実性が増して、分かりづらいバグの温床になる、というような考え方があるのじゃないかな?