从静态内部类的外部类的访问静态变量

问题描述 投票:0回答:1

我了解嵌套类。我只是想知道为什么我不能够使用它的一个实例从一个静态内部类访问外部类的静态变量。

class MyListner {
    static String name = "StaticApple";
    String nonStaticName = "NonStaticApple";

    static class InnerMyListner {
        void display(){
            System.out.println("Static variable of outer class: " + name);
        }
    }

    private static final MyListner singleton = new MyListner();

    private MyListner() {

    };

    public static MyListner getInstance() {
        return singleton;
    }
}

public class Results{
    public static void main(String[] args) {
        MyListner.getInstance();

        MyListner.InnerMyListner innerclassO = new MyListner.InnerMyListner();
        innerclassO.display();  // This works
        String staticVariable = innerclassO.name;  // Why doesn't this work?
    }
}
java static inner-classes
1个回答
1
投票

你必须明白class(ES)是如何在这里工作。 InnerMyListner类是一个静态嵌套类。

与类方法和变量,静态嵌套类与它的外部类相关联。

虽然静态嵌套类不能访问外部类实例属性,它可以访问的静态属性(由所有实例共享),这是可见度范围内。

里面Results你出去name能见度范围。 为了更深入的概述,请参见Java documentation

© www.soinside.com 2019 - 2024. All rights reserved.