如何防止外部类方法访问嵌套类的私有定义方法或字段?

我试图阻止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 节)的主体内时才允许访问。

而且,实际上,限制访问没有多大意义。外部类程序员完全控制内部类;如果他愿意,他可以保持克制。

否则,将内部类提升到顶级。


以上是如何防止外部类方法访问嵌套类的私有定义方法或字段?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>