为什么内部类有static成员的时候该内部类就必须为静态内部类?

如果一个内部类中有静态成员,那么该内部类就必须为静态内部类。
这是为什么?

阅读 4.5k
3 个回答
  1. static是在初始化时加载到内存中的。
  2. 初始化内部类就必须创建外部类的实例。

看了一下楼上帖子的讨论部分,还是存在一个疑问,总结一下讨论:
静态成员变量依附于当前类的加载,也就是内部类的加载
非静态内部类的加载依赖于外部类的实例,即内部类的默认构造函数会引用到外部类实例。

不是很理解的是,类加载的时候,必须把构造函数的参数穿进去么,这不是在实例化一个对象么,如果我们用ClassLoader去加载内部类,没有穿构造函数的参数,是不是就会加载不成功。

还有一个小的疑问,静态内部类的单例实现,不就是靠着内部类的延迟加载么?

clipboard.png
所以这句话,是否是不是静态的内部类,不应该都不会加载么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题