我有一個小的類,它包含一個靜態最終變量和靜態函數:靜態函數返回錯誤的值?
public class GlobalConstants {
public static final boolean ONLINE = true;
public static boolean isOnline(){
return ONLINE;
}
}
(當然有一點重複代碼,但請忽略)
我打包我的程序一個可運行的罐子,並得到奇怪的結果:
log.debug(GlobalConstants.isOnline()); //prints false
log.debug(GlobalConstants.ONLINE); //prints true
我希望他們都打印「真」。
是java編譯器做了一個優化,導致這種奇怪的行爲,或者我錯過了什麼?
您未設置isOnline,您正在設置ONLINE。 – durbnpoisn
你真的運行過這個最簡單的例子嗎?也許你從代碼中刪除了一些重要的部分?我創建了一個項目並執行你的代碼。它運行良好。 –
@Neuron不,它是一個大程序的一部分,但是兩個log.debug行都在程序啓動時調用,並相互調用。請注意,在eclipse中它工作正常,只有當我將它打包在可運行的jar中時,log.debug行會打印錯誤的值。 –