吕书凯 发表于 2012-10-7 00:20
被静态修饰的内部类成员会在内部类加载前先加载,如果内部类不是静态的,就会造成没有内部类就先有了内部类 ...
"如果内部类不是静态的,就会造成没有内部类就先有了内部类的成员,这是不允许的,所以内部类也要是静态,这样静态内部类加载后静态成员也加载"
你这解释似乎是说不通的.
因为就算内部类不是静态的,而内部类有成员是静态的,你只要不实例化内部类对象(当然不只是new内部类对象了,一共有6种主动调用,可以使JVM加载类,从而将类中的静态成员加载进数据区中.),内部类中的静态成员也是不会被加载的.要知道,一个类的静态成员想要被加载进数据区中,必须要是6种主动使用的其中一种才可以.你若只是将一个静态成员写进一个类(不管这个类是静态的还是非静态的,当然只有内部类才可能是静态的.)中,只要在主动使用这个类时(6种主动使用方式之一),JVM才会将类中的静态成员加载进数据区中.
所以你的这个说法讲不通. |