为什么这段代码不起作用
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”时,我收到一条错误消息,说我正在静态中使用内部类语境。 在其他方法中执行相同操作时没有错误。
最佳答案
您的错误与字段访问无关。此行编译失败:
A a = new A();
原因:如果没有封闭实例,则无法实例化内部类,而这正是该行代码试图执行的操作。你可以这样写
A a = (new BB()).new A();
它将提供一个内联的封闭实例。然后您也将能够访问私有(private)字段。
或者,只需将 A
类设为 static
,这意味着它没有封闭实例。
关于java - 从外部类访问内部类的私有(private)实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18825718/