【发布时间】:2013-11-18 06:51:20
【问题描述】:
这是我通过StaticInner 的静态变量更新OuterClass 的实例变量x 的代码。我知道静态内部类不能直接引用外部类的实例变量。我正在使用外部类的实例来引用其实例变量“x”并对其进行更新。这进入stackoverflow错误。代码符合要求。代码中的最后一行没有编译,我注释掉了。我不明白那条线有什么问题。
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.
}
}
【问题讨论】:
标签: java inner-classes static-class