[英]Nested class inside static block not identified by outer class's method
这是我的代码:
class Outer
{
static int x=10;
static
{
class Inner
{
void disp()
{
System.out.println(x);
}
}
}
void outdisp()
{
for(int i=0;i<5;i++)
{
Inner in = new Inner();
in.disp();
}
}
public static void main(String []args)
{
Outer out = new Outer();
out.outdisp();
}
}
我只想知道为什么方法outdisp()
在这种情况下不识别Inner
类 ,而如果我将Inner
类声明为静态而不是静态块,它可以正常工作吗?
那里没有任何静态内部类 。 你对静态块感到困惑。 静态内部类将编写如下:
static class Inner { ... }
它不起作用,因为当JVM加载Outer
类时将执行静态初始化块 。
删除关键字static
,你会没事的。
任何标识符的范围都在{...}
周围,这里是静态初始化器static{...}
。 所以标识符Inner
在outdisp()
方法中是不可见的。
在静态初始值设定项之外移动类Inner
声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.