当前位置: 代码迷 >> J2SE >> java内部类,该如何解决
  详细解决方案

java内部类,该如何解决

热度:93   发布时间:2016-04-23 19:38:50.0
java内部类
Java不允许在非静态内部类里面定义静态成员。下面的程序显示了非静态内部类里包含静态成员将引起编译错误。
public class InnerNoStatic {
    private class InnerClass{
          static{
                System.out.println("=========");
                  }
              private static int intProp;
              private static void test(){}
           } 
}

为什么不允许在非静态内部类里面定义静态成员?求大神解释一下
------解决思路----------------------
mark 同问,求详细解答
------解决思路----------------------
虚拟机加载:加载类---所有静态成员初始化---生成对象,初始化非静态成员

new A( ).new B( )
java虚拟机要求所有静态变量创建必须在对象创建前完成
而非静态内部类依附于外部类对象
(你可以把非静态内部类看成是一个普通的非静态成员,是不是要等类生成对象后才有这个非静态成员)
其内部类的加载必须在外部类对象创建之后才能完成
如果内部类有静态变量就违背了这个原则