【发布时间】:2019-02-10 13:41:46
【问题描述】:
我正在学习嵌套类。我只是想知道为什么我无法使用静态内部类的实例访问外部类的静态变量。
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?
}
}
【问题讨论】:
-
name不是InnerMyListener的属性,它是MyListener的属性 -
至少因为
InnerMyListner没有名为name的字段 -
你需要这个:String staticVariable = MyListner.name; // 为什么这不起作用?
-
@MTCoster,是的,名称不是 InnerMyListener 的属性,但静态嵌套类可以访问封闭类的静态成员。不是吗?那么如何使用 display() 方法访问...?
-
@CookingJava 看到我的回答。
标签: java static inner-classes