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。
有人可以解释一下如何在 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。