為什麼 Java 不允許在建構函式中初始化 static final 變數?
如果你把變數宣告為 static 和 final,並且需要在宣告時或在 static 塊中對其進行初始化。如果你嘗試在建構函式中對其進行初始化,編譯器會認為你正試圖重新分配值,並會生成編譯時錯誤——
示例
class Data { static final int num; Data(int i) { num = i; } } public class ConstantsExample { public static void main(String args[]) { System.out.println("value of the constant: "+Data.num); } }
編譯時錯誤
ConstantsExample.java:4: error: cannot assign a value to final variable num num = i; ^ 1 error
要使此程式起作用,你需要在靜態塊中初始化最終靜態變數,如下所示:
示例
class Data { static final int num; static { num = 1000; } } public class ConstantsExample { public static void main(String args[]) { System.out.println("value of the constant: "+Data.num); } }
輸出
value of the constant: 1000
廣告