漏打了inner,
non-static inner class

解决方案 »

  1.   

    to  yyt99
    所有object共享一份static fields or methods
      

  2.   

    to binriyue我知道是这个意思啊,我是不理解它的解释:
    Fields and methods in non-static inner classes can only be at the outer level of a class
      

  3.   

    初始化类的时候的作用域问题当一个类被调入内存的时候,会进行初始化,主要是要队有static修饰符的变量和方法进行一些初始化操作,如果没有static修饰符,就不会进行这个初始化,所以当inner class没有static修饰符的时候,inner class被嵌入的那个类被调入内存的时候,这个inner class就不会被初始化,因为它不是static的,所以当你的这个inner class中有static的变量的时候,这个变量应该在什么时候被初始化呢?显然在什么时候都是不合适的,结合下面的代码public class outerClass
    {
    static public int var1 = 1; // classLoader调入outerClass进内存时初始化
    public int var2 = 2; // 实例化outerClass的时候初始化

    static public class innerClass1 // 这个innerClass有static修饰符,会在classLoader调入内存的时候初始化
    {
    static public int var1 = 1; // classLoader调入outerClass进内存时初始化
    public int var2 = 2; // 实例化innerClass1的时候初始化
    } public class innerClass2 // 这个innerClass没有static修饰符,不会在classLoader调入outerClass进内存的时候初始化,会在实例化innerClass2的时候初始化
    {
    static public int var1 = 1; // 没有办法在任何时候初始化
    public int var2 = 2; // 实例化innerClass2的时候初始化
    }
    }实际上我们可以用过这样的语句访问innerClass1中的var1
    outerClass.innerClass1.var1
    但是注意不能用这样的语句
    outerClass.innerClass2.var1
    注意innerClass2本身并不是static的,类似于outerClass中的var2,你怎么能用这样的方法去访问outerClass中的非static域呢这个就是我对上面这段话的理解,欢迎批评指正    -_-;