0
私はJava 7 OCP試験のために勉強している学生をいて、彼はこの問題を私に提示しました。どちらも彼と私はそれが最終的でない限りローカル変数は、メソッドの内部クラス内で使用することができないことを理解し、彼はうまく動作します、次のコードで私を提示:ローカル変数を内部クラスの内部で使用することはできません。では、なぜこのコードは機能しますか?
public class TestC195 {
public static void main(String[] args) {
TestC195 myObject = new TestC195();
myObject.doStuff();
}
private String x = "Outer 2";
void doStuff() {
String z = "local";
class myInner {
public void seeOuter() {
System.out.println("outer: " + x);
System.out.println("outer: " + z);
}
}
myInner in = new myInner();
in.seeOuter();
}
}
出力は次のとおりです。
outer: Outer 2
outer: local
私たちは何が欠けていますか?あなたは、Java 8でコンパイルされている場合は、それが効果的に最終的なものであるため
それだ[クラスのメンバ](https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) 。 – Maroun
あなたはおそらくJava 8でコンパイルします。ここでは、ルールはわずかに変更されます。変数は "効果的に"最終的なものでなければなりません。 –