java final修饰变量时的一种状况

有以下一种场景。java

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

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

问题描述:因为业务缘由须要更改desc变量,因而我更改desc="描述123",将PaymentConfig.java从新编译部署。部署

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

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

因此出现了上面的问题。变量

所以在发布程序的时候须要吧Test.class从新编译发布。引用

-------------------------------------------------------------------程序

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

相关文章
相关标签/搜索