我们开发中经常会用到常量类(尤其是在代码重构时),如果是private的还好些,但如果要生命为public的需要注意了,它可能会让你的代码陷入未知的数据错误。替代方式为Java5.0新加的枚举。
public class Test1 {
public static final String NAME = "张三";
}
public class Test2 {
public String NAME = Test1.NAME;
}
以上代码如果在同一个jar中是没有问题的,或是说如果一起打jar(或war、ear)是没有问题的,但如果这两个类是在两个jar中,那就坏了。Test2被编译后会变成下面的样子,如果Test1.NAME值发生了改变,那Test2是无法自己发生变动的(无法引用过去)。
public class Test2 {
public String NAME = "张三"; //此处编译器会编译成具体的值,而不是Test1.NAME引用
}