内部 class 只能从方法访问外部 classes 属性

inner class able to access outer classes attributes from method only

请查看这段编译良好的代码:

class OuterClass {

    String a = "A";
    String b = "B";
    String c = "C";


    public static class StaticInnerClass {

    }

    public String stringConCat() {
        return a + b + c;
    }
}

这正如我所料,因为内部 class 可以访问外部 classes 属性。但是现在当我尝试相同的代码但将外部属性分配给内部属性时,系统会抱怨:

class OuterClass {

    String a = "A";
    String b = "B";
    String c = "C";


    public static class StaticInnerClass {
        String x = a; //this can not be done, why ?
    }

    public String stringConCat() {
        return a + b + c;
    }
}

编译时的error/warning是:Non-static field a cannot be referenced from a static context.

是否因为在方法 stringConCat() 中您实际上需要一个实例来调用该方法(post 构造函数调用)所以它被允许?然而,在第二个示例中没有真实实例,因此它将其视为静态引用 ?

我读了I thought inner classes could access the outer class variables/methods?,但它仍然没有下沉。有人可以帮忙吗?

关键在您的错误消息中:"Non-static field a cannot be referenced from a static context."

inner classes 可以访问外部class变量,但是你的嵌套class是静态的,不是内部的,变量是不是静态的。要么使变量成为静态变量,要么使嵌套的 class non-static.