前些天,修改了CONTANT文件中静态常量的值,重新编译后只替换了该文件,重启服务器后发现修改的地方并没有生效。
经过一天多的纠结也排查,最后发现使用该CONTANT文件的静态常量的其他class文件中并没有值的改变。
最后经过查询资料得知:
静态常量(即用 static final 修饰的变量)是编译时常量,当一个class文件编译完毕,它内部使用到的所有常量的具体值就已经确定了,不能想当然地以为它在运行时并连接常量管理类之后才会以引用方式使用常量。
所以尽量不要使用静态常量,用属性文件来代替。