【ジャワ】关于囲みスコープ解决で定義された非finalローカル変数のリストを参照することはできません方法

今日では、研究では、問題が発生しました:

囲みスコープで定義された非finalローカル変数のリストを参照することはできません

 

 

 

 

 

ここで新しいRunnableを(){...}の部分匿名の内部クラス、コンパイルエラーリストのアクセスローカル変数テスト()メソッドであります

ソリューション:

最終変更リスト付き

 

 

理由:

プログラムの実行テスト()メソッド、メソッドは、変数リストのコールスタックのローカル変数を生成し、これは部分的な内部クラスのオブジェクトを生成するときに試験(方法、それは、ローカル変数のリストにアクセスする)ランの終了後、ローカル変数リストが死んだ存在しませんが、(もはやオブジェクトを参照するときにのみ、それは死になることはありません)にも持続する可能性がローカル内部クラスのオブジェクトは、実行死の方法テスト()エンドで終わっています。ローカル内部クラスオブジェクトとローカル変数リストのライフサイクルの一貫性のない、ローカル内部クラスのオブジェクトの死後ローカル変数リストは存在しない変数にアクセスすることはできません。

 

final修飾子を使用すると、ローカル変数リストを変更し、その後、独自のデータメンバとして、「コピー」、ローカル内部クラスのオブジェクトの死後ローカル変数リストのローカル内部クラスのオブジェクトのリストがまだのリストにアクセスすることができ、「コピーを。」

 

 

 

 注:Java8も、最終的なコンパイルを書くことはできません(暗黙のうちに最終追加)

(私はJava7ました)

おすすめ

転載: www.cnblogs.com/shuaiBqi/p/11907843.html