の静的変数によってのインスタンス変数x
を更新するコードを次に示します。静的内部クラスが外部クラスのインスタンス変数を直接参照できないことを理解しています。インスタンス変数 'x' を参照して更新するために、outerclass のインスタンスを使用しています。これは、stackoverflow エラーになります。コードは正常に準拠しています。コメントアウトしたコードの最後の行はコンパイルされません。その行の問題点がわかりません。OuterClass
StaticInner
public class OuterClass {
private int x = 10;
private static int y = 15;
private static StaticInner si=null;
public OuterClass() {
setStaticInner();
this.x=si.ic.x;
}
public static class StaticInner {
private static int z = 20;
private OuterClass ic = new OuterClass();
public void increment() {
OuterClass.y+=z;
z+=OuterClass.y;
ic.x+=10;
}
}
public void setStaticInner(){
si=new StaticInner();
}
public static void main(String[] args){
OuterClass ic = new OuterClass();
ic.si.increment();
System.out.println(ic.x);
//OuterClass.StaticInner sb1 = ic.new StaticInner(); This line does not compile.
}
}