繁体   English   中英

静态块内的嵌套类不是由外部类的方法标识的

[英]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{...} 所以标识符Inneroutdisp()方法中是不可见的。

在静态初始值设定项之外移动类Inner声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM