【发布时间】:2013-09-20 11:12:50
【问题描述】:
为什么这段代码不起作用
public class BB
{
private class A
{
private int x;
}
public static void main(String[] args)
{
A a = new A();
a.x = 100;
System.out.println(a.x);
}
}
这段代码正在运行吗?
public class BB
{
private class A
{
private int x;
}
static int y = 3;
public static void main(String[] args)
{
BB b = new BB();
b.compile();
System.out.println("y = "+ y);
}
public void compile()
{
A a = new A();
a.x = 100;
System.out.println(a.x);
System.out.println("y = "+ y);
}
}
在第一个代码中,当我试图通过内部类 'a' 的对象引用内部类 'A' 的实例变量 'x' 时,我收到一条错误消息,提示我在静态中使用内部类语境。 用其他方法做同样的事情没有错误。
【问题讨论】:
-
在第二个代码中,您不是在静态上下文中访问内部类:您是从类
BB的方法访问它。这就是您没有收到该错误的原因。 -
试试
BB b=new BB(); A a = b.new A(); -
你的嵌套类也应该是静态的。
标签: java private inner-classes