我了解嵌套类。我只是想知道为什么我不能够使用它的一个实例从一个静态内部类访问外部类的静态变量。
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?
}
}
你必须明白class
(ES)是如何在这里工作。 InnerMyListner
类是一个静态嵌套类。
与类方法和变量,静态嵌套类与它的外部类相关联。
虽然静态嵌套类不能访问外部类实例属性,它可以访问的静态属性(由所有实例共享),这是可见度范围内。
里面Results
你出去name
能见度范围。
为了更深入的概述,请参见Java documentation