メソッド内で定義されたInner class
がそれを使用する必要がある場合、なぜlocal variable
をfinal
と宣言する必要がありますか?内部クラスとローカル変数
例:
class MyOuter2 {
private String x = "Outer2";
void doStuff() {
final String y = "Hello World";
final class MyInner {
String z = y;
public void seeOuter() {
System.out.println("Outer x is "+x);
System.out.println("Local variable is "+y);
MyInner mi = new MyInner();
mi.seeOuter();
}
}
}
}
文字列が最終一定にする必要があるy
なぜ?どのように影響を受けますか?
このディスカッションはhttp://techtracer.com/2008/04/14/mystery-of-accessibility-in-local-inner-classes/ – kosa
の可能な複製を参照してください[[内部の最終的な変数を参照できません]別のメソッドで定義された内部クラス](http://stackoverflow.com/questions/1299837/cannot-refer-to-a-non-final-variable-inside-an-inner-class-defined-in-a- differen) –
[Javaのローカル最終変数に関する質問](http://stackoverflow.com/questions/5947352/question-about-local-final-variable-in-java) – Lion