成员内部类中不能存在任何static的方法和变量

成员内部类中不能存在任何static的方法和变量
其实成员内部类并不是完全不能出现static:任何方法都不能使用static,有些属性可以使用static。

  1. 属性使用static的前提有两点:
    1)该属性是基本数据类型或者String;
    2)该属性必须被final + static同时修饰;
    原因:
    很多人试图从jvm类加载的角度去分析这个问题,但都是自相矛盾的。
    jvm加载规则是:static域随着类的加载被初始化,是先执行的。非static域随着实例化对象被初始化,是后执行的。
    按照这个规则:
    1、实例化外部类的对象;
    2、非静态域的成员内部类Inner Class被加载;
    3、初始化Inner Class的static域;
    4、实例化内部类的对象;
    这个逻辑是走的通的,根本不会出现很多人说的“Inner Class初始化其static域的操作在Inner Class被加载之前就执行了”这种矛盾,
    完全就是胡扯硬套。

       更靠谱的说法是:jdk可以这样做,但不知为什么他设计成了不允许。
       
       可以参考:https://www.zhihu.com/question/342558076/answer/801500157
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值