微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

怎样输出这三个i值?

时间:2014-04-11 20:20  浏览:努力统计中...
publicclassTest { publicstaticvoidmain(String[]args) { Out.Inx=newOut.In(); x.f(); } } classOut { privatestaticinti=30; staticclassIn { privateinti=20; publicvoidf() { inti=10; System.out.println(i); System.out.println(this.i); System.out.p
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

3楼是对的,测试了下

把内部类In 的Static 去掉···

把内部类In 的Static 去掉··
并且
将Out.In x = new Out.In();
改为
Out out = new Out();
Out.In x = out.new In();

+1

谢谢大家,明白了。
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------