以前经常用final,尤其是定义Constant类。
例如
public final static String instanceName="orcl";//数据库用户实例
调用的时候
tag = LoadData2Customer.loadData(Constant.dbUserName,
Constant.dbPassWord, Constant.instanceName, dataFile,
controlFileName, logFileName, matchProperty, OnlineUserInfo
.getOnlineUserId(), listId);
这个没啥错误,但是如果你只想替换一下Constant类
例如
修改为
public static final String instanceName = "epv4";
你会发现调用的时候,参数仍然为orcl,
反编译一下
tag = LoadData2Customer.loadData("epv4", "epv4", "orcl", dataFile, controlFileName, logFileName, matchProperty, Long.valueOf(OnlineUserInfo.getOnlineUserId()), listId);
原来编译的时候,变成了常量。
必须要重新编译。
看了一下java的文档
编译期常量,永远不可改变。对于编译期常量,它在类加载的过程就已经完成了初始化,所以当类加载完成后是不可更改的,编译期可以将它代入到任何用到它的计算式中,也就是说可以在编译期执行计算式。当然对于编译期常量,只能使用基本类型,而且必须要在定义时进行初始化。
阅读(1782) | 评论(0) | 转发(0) |