成员内部类变量访问

时间:2019-01-28 11:44:04

标签: java java-8 inner-classes

请帮助我了解第k3行上的java8编译器错误。

    public class Color {
        private int hue = 10;
        public class Shade {
                public int hue = 20;
        }
        public static void main(String[] args) {
                System.out.println(new Color().hue); // k1
                System.out.println(new Color().new Shade().hue); //k2 
                System.out.println(new Shade().hue); //k3
        }
}

如果我注释掉k3,则上面的代码会编译。 k1输出10,k2输出20。

使用k3时,编译失败:

Color.java:11: error: non-static variable this cannot be referenced from a static context
                System.out.println(new Shade().hue);

主要方法是在静态上下文中理解的。 图片中的非静态“ this”变量在哪里。 谢谢。

0 个答案:

没有答案