為什麼 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP