Java常量类静态变量的值修改需要注意的事项
作为一名Java的搬砖工,一般的项目工程都会使用到Constants.java作为常量工具类,喜欢在常量类里面定义各种静态内部类,使用各种静态变量,如:
public class Constants{
public static class WXCHAT {
// 成功
public static final int SUCCESS = 1;
}
}
然后就在其他的JSP页面或Java类很方便的引用此静态变量,如:
System.out.println(Constants.WECHAT.SUCCESS)
...几天过去了....一些JSP也引用到这个变量了...
...几个星期过去了....一些Java类也引用到这个变量了...
几个月过去了,产品说要修改需求.将public static final int SUCCESS = 1;修改成public static final int SUCCESS = 0;
这时问题就来了,如果我们只是单纯的修改Constants类里面的值,直接更新应用.这里就会发现很奇怪的问题.修改后的值没生效.....
这到底是什么情况,重启Resin或Tomcat服务器都没生效...
...几分钟过去了...
...几小时过去了...
问题终于理清了..原来是引用的JSP编译的时候还保存着旧值1,所以新修改的值0一直不生效...
解决方法很简单也很麻烦..如下:
将有引用这个静态变量值的JSP或Java类,统统更新一次.问题就解决了.