トップ 一覧 置換 検索 ヘルプ RSS ログイン

内部クラスからローカル変数の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
ローカルな内部クラスのインスタンスのライフタイム(生成されてからGCされるまでの期間)は、
それを宣言するブロックやメソッドのライフタイムより長いことがあり、
その場合、内部クラスから参照しているローカル変数や引数が実際に参照を行なう
タイミングまで存在し続けていないことがあります。
そういったケースでも正しく値が参照できることを保証するため、
参照可能なものを内部クラスが生成される時点以降に値が変更されないもの、
すなわち、final宣言されているローカル変数や引数のみに制限し、
その値をコピーしてインスタンス内部に保持するようになっています。

{{category2 プログラミング言語,Java}}