当前位置:  开发笔记 > 编程语言 > 正文

静态成员类可以用Java评估封闭类的成员吗?

如何解决《静态成员类可以用Java评估封闭类的成员吗?》经验,为你挑选了1个好方法。

我一直在读这本书,当我读到项目22:赞成非静态的静态成员类时,我对这个观点感到困惑,静态成员类可以访问封闭类的成员吗? 在此输入图像描述



1> T.J. Crowder..:

静态成员类可以用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",表明:

Inner可以访问私有静态字段foo.

Inner可以访问私有Example构造函数.

Inner可以访问私有实例字段bar.

原因,他们可以访问的是嵌套类是外围类的成员(见JLS§8.1.3,就像任何其他成员(例如,封装类的成员函数),因此它有访问私有封闭类的一部分就像封闭类的方法成员一样.

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

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有