假設您編譯了以下兩個類。第一個意思是代表客戶;第二個是圖書館課。運行時不反映的常量值
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
?
有沒有在classpath中兩個 「庫」 類?你重新啓動了VM嗎?你的容器是什麼? – JustinKSU 2012-01-17 21:19:48
這是直接[Java Puzzlers](http://www.amazon.com/Java-Puzzlers-Traps-Pitfalls-Corner/dp/032133678X)。相同的字符串常量和一切。如果你想了解Java的更好的例子,這是一個很棒的閱讀。 – yshavit 2012-01-17 21:19:56
這個問題確實是來自Java Puzzlers(拼圖#93)的逐字剽竊。 – 2012-01-20 00:56:53