zoukankan      html  css  js  c++  java
  • java final修饰变量时的一种情况

    有如下一种场景。

    1.在文件PaymentConfig.java中存在如下变量public static final desc="描述"

    2.类Test.java中使用了desc变量,String xxDesc = PaymentConfig.desc.

    问题描述:由于业务原因需要更改desc变量,于是我更改desc="描述123",将PaymentConfig.java重新编译部署。

    但是在生成环境中Test类取得的xxDesc仍然是"描述",而不是"描述123"。

    解决办法:反编译Test.class可以看到String xxDesc ="描述";这意味着,在编译期间,jvm就把xxDesc赋值为"描述"了。

    所以出现了上面的问题。

    因此在发布程序的时候需要吧Test.class重新编译发布。

    -------------------------------------------------------------------

    final的不可变性,是在编译期确定的,任何一个引用了final变量的类中变量,该变量都被jvm在编译时指定了指定字符。

  • 相关阅读:
    线性最大子数组的求法(二)
    高难度智力题
    职业规划
    良好的学习习惯
    毕业生面试绝招
    编写Java程序最容易犯的21种错误
    spring02
    spring_01
    用soapUI生成客户端代码
    idea创建git分支
  • 原文地址:https://www.cnblogs.com/shihujiang/p/3245286.html
Copyright © 2011-2022 走看看