日期:2014-05-20  浏览次数:20992 次

怎样输出这三个i值?
public class  Test
{
public static void main(String[] args)
{
Out.In x = new Out.In();
x.f();

}
}

class Out
{
private static int i= 30;

static class In  
{
  private int i = 20;
  public void f()
  {
     int i = 10;
     System.out.println(i);
     System.out.println(this.i);
     System.out.println(Out.this.i);
  }
}
}


这是个内部类的输出问题,错误提示为:
java:23: 错误:无法从静态上下文中引用非静态 变量 this
                    System.out.println(Out.this.i);

该怎样改动?
------解决方案--------------------
public class Test
{
public static void main(String[] args)
{
Out.In x = new Out.In();
x.f();

}
}

class Out
{
private static int i = 30;

static class In
{
private int i = 20;

public  void f()
{
int i = 10;
System.out.println(i);
System.out.println(this.i);
System.out.println(Out.i);
}
}
}


------解决方案--------------------
在用Static修饰的内部类和方法中,是无法使用Out.this的。
------解决方案--------------------
有static就不能用this
------解决方案--------------------
把内部类In 的Static 去掉···
------解决方案--------------------
把内部类In 的Static 去掉··
并且
将Out.In x = new Out.In();
改为
Out out = new Out();
Out.In x = out.new In();