静态成员类能否评估封闭类';Java中的成员?

静态成员类能否评估封闭类';Java中的成员?,java,Java,我一直在读这本书,当我读到第22条:喜欢静态成员类胜过非静态成员类时,我对这个观点感到困惑,静态成员类可以访问封闭类的成员吗? 静态成员类能否在Java中评估封闭类的成员 是的,他们可以。这很容易检查: public class Example { private static String foo = "foo"; private String bar; private Example() { this.bar = "bar"; }

我一直在读这本书,当我读到第22条:喜欢静态成员类胜过非静态成员类时,我对这个观点感到困惑,静态成员类可以访问封闭类的成员吗?

静态成员类能否在Java中评估封闭类的成员

是的,他们可以。这很容易检查:

public class Example {
    private static String foo = "foo";

    private String bar;

    private Example() {
        this.bar = "bar";
    }

    static class Inner {
        static void check() {
            System.out.println(foo);
            System.out.println(new Example().bar);
        }
    }

    public static final void main(String[] args) {
        Inner.check();
    }
}
上面编译并输出“foo”和“bar”,显示:

  • internal
    可以访问私有静态字段
    foo

  • internal
    可以访问私有
    示例
    构造函数

  • internal
    可以访问私有实例字段
    bar

它们具有访问权限的原因是嵌套类是封闭类的成员(请参阅,就像任何其他成员(例如,封闭类的成员函数)一样),因此它可以像封闭类的方法成员一样访问封闭类的私有部分


与内部类(非
静态
成员类)不同,该类没有到封闭类的封闭实例的隐式链接(没有到
this
)的隐式链接)。因此,要访问实例特定的字段或方法,它必须创建一个实例(如上我们想要访问
bar
时所述),否则它就没有可使用的实例。

代码值1024个字:给我们展示一个你想要的代码示例(当你在做的时候,你知道,试着编译它,看看会发生什么)。另外,不要使用图像引用。使用文本和blockquote标记引用。上面的内容不是很长或很难键入。请确保提供属性。有什么疑问?混淆在哪里?