首页 > 解决方案 > 成员内部类变量访问

问题描述

你能帮我理解第 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”变量在哪里。谢谢。

标签: javajava-8inner-classes

解决方案


推荐阅读