以下代碼僅從當前年份中使用java.util.Calendar
類減去一個值(本例中爲10,僅用於演示)。靜態成員未按預期初始化
public final class Test
{
private static final Test TEST = new Test();
private static final int YEAR = Calendar.getInstance().get(Calendar.YEAR);
private final int eval=YEAR - 10;
public static void main(String[] args)
{
System.out.println("Evaluation "+TEST.eval);
}
}
我希望這段代碼能夠顯示2003(當前年份 - 10),但它會顯示-10
。我假設常量YEAR
尚未初始化。爲什麼在這種情況下會發生?
嘗試切換'TEST'和'YEAT'的聲明的順序。 – 2013-04-22 23:33:07
@LouisWasserman即使它可以解決他的問題 - 這是一個非常非常頑皮的行爲方式:) – alfasin 2013-04-22 23:57:02
坦率地說,首先有這種依賴訂單的代碼非常非常淘氣。 – 2013-04-23 00:36:03