我發現它帶有枚舉的凝灰岩。這是Kathy Siera書中的一個例子:枚舉構造函數靜態初始化程序
public class WeatherTest {
static Weather w;
public static void main(String[] args) {
System.out.print(w.RAINY.count + " " + w.Sunny.count + " ");
}
}
enum Weather {
RAINY, Sunny;
int count = 0;
Weather() {
System.out.print("c ");
count++;
}
}
輸出結果是c c 1 1.理解。 現在我想如果計數字段是靜態的呢?輸出是c c 2 2嗎? 基於此,我將count變量修改爲static。 但是我看到的是這樣的: 編譯時間錯誤:非法引用來自初始值設定項的靜態字段。
在網上搜索我發現這是Sun的一種循環漏洞,它允許可以改變靜態字段的靜態方法。好吧..所以現在我用一個靜態方法增加我的工作:
令我驚訝的是,我得到的輸出:c c 0 0! 任何人都可以在拍攝自己之前向我解釋這種行爲嗎?
請解決您的縮進和括號。 – ardent 2012-07-20 16:35:17
非常凝灰岩的問題!所有的Java程序員,自己裝甲:) – Kameron 2012-07-20 16:36:12
ardentsonata:好的 – user1500024 2012-07-20 16:36:50