Java 中静态嵌套 Class 的私有成员

Private member of a Static Nested Class in Java

有人可以解释一下如何在 class 外部访问静态嵌套 class 的私有成员吗?

class Main {
    static class Inner{
        private static int calc= 10;
    }

    public static void main(String args[]){
        System.out.println("calc is "+Main.Inner.calc);
    }
}

内部 class 只是一种将真正属于原始外部 class 的某些功能完全分离的方法。

内部 class(出于访问控制的目的)被视为包含 class 的一部分。这意味着可以完全访问所有私人。

实现的方式是使用合成包保护方法:内部 class 将被编译为同一包中的单独 class。 JVM 不直接支持这种级别的隔离,因此在字节码级别将具有包保护方法,外部 class 用于获取私有 methods/fields.

如果您想隐藏内部 class 的私有成员,您可以使用 public 成员定义一个接口,并创建一个实现该接口的匿名内部 class。