事件描述:
原来的查询sql是放在常量中存储的,现在根据客户的要求,需要修改sql的查询条件。修改好后重新编译了常量类给客户更新,测试发现没有效果,反编译常量对应的class,确定修改的内容已经加上了。一开始不知道问题出在哪,后来反编译看另一个类引用该常量的地方,发现源码中常量的引用被直接替换成常量值对应的字符串。结合问题现象,可以知道类在编译的时候就会把源码中常量的引用替换成常量的值。
问题原因: java中给常量的定义是 常量一旦初始化就不可以被修改 ,是因为 类在编译的时候会把源码中常量的引用直接替换成常量的值