>>467
ローカル変数はメソッドが終了するとオブジェクトがいつか破棄されてしまう。
しかし、内部で宣言されたインナークラスのインスタンスは生き残る可能性がある。
この時、インナークラス内からローカル変数を参照しようとすると、参照できない可能性があるため。

この問題を解決するため、コンパイラがfinalキーワードを使用したローカル変数がある場合に、
インナークラスのコンストラクタに引数として渡すことになった。

こんな理由だったはず。たぶんね。