innerクラスから参照するouterクラスのメソッドのローカル変数はfinalでないといけない理由

finalじゃないのを使おうとしたらコンパイルエラーになったのでjavaはクロージャ使えないクソ言語だと思いました。コンパイラも「finalにしろ」とか教えろっつーの。まぁ出来ても無名クラスの文法ってヒドイもんです。インナークラス周りの文法規則だけすげーややこしいことになっているのって、アレ定義したオッサンはアホだと思う。perlとかで(myやlocalを規則を覚といたほうがいいにしても)出来るんだから、VMの仕様がヘボいだけじゃないの〜?

http://www.gimlay.org/~javafaq/S016.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6897&forum=12&start=8&14

S016:インナークラス - inner class
local class(メソッド内で定義したinnerクラス)からmethodローカル変数をアクセスするには [j-h-b:10343]
innerクラスから参照するouterクラスのメソッドのローカル変数はfinalでないといけない理由 [j-h-b:21015]

http://java-house.jp/ml/archive/j-h-b/010343.html#body
http://java-house.jp/ml/archive/j-h-b/021015.html#body