通过对外部类成员的引用来访问静态嵌套类

时间:2018-01-12 19:17:58

标签: java class nested

我是一名初学者,正在努力学习嵌套课程。以下是有关此主题的第一个问题。

在Java中,为什么不能通过引用外部类的对象来访问静态嵌套类,就像其他静态成员一样。

例如,

class program {
     public static void main(String[] args) {
          outerClass outerClassRefVar = new outerClass();
          int k;
          //k = outerClassRefVar.innerClass.i; doesn't compile
          k = outerClassRefVar.j; //does compile
     }
}

class outerClass {
     static class innerClass {
          static int i = 1;
     }
     static int j = 1;
}

...但是innerClass和j都是outerClass

的静态成员

2 个答案:

答案 0 :(得分:0)

我的解决方案就是这样......如果你想这样做,你必须将静态嵌套类的所有引用都放在静态属性中。另请阅读此Java inner class and static nested class

的内容
public class MyClass {
    public static void main(String args[]) {
       method1();
       System.out.println("main:   " + NestedClass.data1);
    }
    public static void method1(){
        System.out.println("method1:  "+ NestedClass.data1);
    }
    static class NestedClass{
        static String data1 = "Something";
    }
}

答案 1 :(得分:0)

innerClass就像任何类一样,不是任何类的静态成员,包括outerClass。与innerClass的唯一区别在于您使用完全限定名称outerClass从外部outerClass.innerClass引用它。

这有效:outerClass.innerClass.i(BTW使用适当的Java类命名以避免与变量名称混淆)。