final类型变量引用引发的思考

     修改了类A的final变量的值,由于类A在jar包中,把修改后的类A编译成的class直接替换了jar包中的类A,类B运行时会调用类A的final值,结果运行类B时总是原来的结果,不是类A修改后的结果.

    经过一段时间的代码调试总算找到了原因,原来JVM在编译代码时会把final类型的变量直接编译为静态值,即:类B在代码中是引用类A中final变量的值的关系,但编译为class时会把这个值视为静态的编译到类B中.所以出现了只替换jar中的类A的class得不到想要的结果.想要真正的结果还需要重新编译类B并替换jar中类B的class才行,虽然类B没有修改任何代码但编译后的class是不一样的.

     总结一下:修改了final类型的变量值后,所有引用了该变量的类都需要替换.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值