假设你编译了以下两个类。第一个代表客户;第二个是图书馆课。
public class Test{
public static void main(String[] args) {
System.out.println(Lib.FIRST + " " +
Lib.SECOND + " " +
Lib.THIRD);
}
}
public class Lib{
private Lib() { }; // Uninstantiable
public static final String FIRST = "the";
public static final String SECOND = null;
public static final String THIRD = "set";
}
打印:
{空集}
现在假设您按如下方式修改库类并重新编译它,但不重新编译客户端程序:
public class Lib{
private Lib() { }; // Uninstantiable
public static final String FIRST = "physics";
public static final String SECOND = "chemistry";
public static final String THIRD = "biology";
}
打印:
{化学组}
为什么
SECOND
值改变了,但 FIRST
或 THIRD
没有改变?
值(即“the”和“set”)是内联的,而编译器在编译时不会内联
null
。为了避免类似的情况,您可以使用访问器方法。