我是一名初学者,正在努力学习嵌套课程。以下是有关此主题的第一个问题。
在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
的静态成员答案 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类命名以避免与变量名称混淆)。