重複の可能性:
Java-内部クラスとローカル変数
変数をfinalとしてマークすると、内部クラスがそれらにアクセスできるようになりますか?
ローカル内部クラスは、インスタンス変数だけでなく、メソッドのローカル変数(それらが定義されている)にもアクセスできますが、ローカル変数を宣言する必要がありfinal
ます。
この場合、なぜローカル変数を宣言する必要があるfinal
のですか?
重複の可能性:
Java-内部クラスとローカル変数
変数をfinalとしてマークすると、内部クラスがそれらにアクセスできるようになりますか?
ローカル内部クラスは、インスタンス変数だけでなく、メソッドのローカル変数(それらが定義されている)にもアクセスできますが、ローカル変数を宣言する必要がありfinal
ます。
この場合、なぜローカル変数を宣言する必要があるfinal
のですか?
その理由は、ローカル内部クラスのインスタンスがメソッドから返され、メソッドが返された後に続く可能性があるためです。このような場合、ローカル メソッド変数はアクセス中に存在しません。
それらを final として定義すると、それらは実際には一定であるため、後でアクセスしても安全です。詳細については、内部クラス内の非最終変数を参照することはできません。
あなたは匿名クラスについて話している。final
コードは未知の実行フレームで実行される可能性があり、おそらく別のスレッドでも実行される可能性があるため、ローカル変数 (のみ) は実装によって参照される必要があります。クラスがインスタンス化 (宣言) されている - つまり、変数がfinal
.