如何防止外部类方法访问嵌套类的私有定义方法或字段?
我试图阻止OuterMethod访问私有定义的字段InnerField和方法InnerMethod。它似乎不像我期望的那样工作。
import static java.lang.System.out;
class Outer {
void OuterMethod() {
Inner.InnerMethod();
out.println(new Inner().InnerField);
}
private final static class Inner {
private final int InnerField = 20;
private static void InnerMethod() {
out.println("Inner Method");
}
}
}
public class Test {
public static void main(String[] args) {
new Outer().OuterMethod();
}
}
题
如何防止外部类方法访问嵌套类的私有定义方法或字段?
回答
你不能。爪哇是这么说的。
来自Java 语言规范的第 6.6.1 节,确定可访问性:
否则,成员或构造函数被声明为私有,并且当且仅当它发生在包含成员或构造函数声明的顶级类(第 7.6 节)的主体内时才允许访问。
而且,实际上,限制访问没有多大意义。外部类程序员完全控制内部类;如果他愿意,他可以保持克制。
否则,将内部类提升到顶级。