Java Switch 語句:常數表達式要求
在 Java 中使用 switch 語句時,case 標籤必須是常數表達式。這意味著表達式必須在編譯時已知。在給定的程式碼中:
public static String lookup(int constant) { switch (constant) { case Foo.BAR: return "bar"; case Foo.BAZ: return "baz"; case Foo.BAM: return "bam"; default: return "unknown"; } }
case 標籤上的編譯器錯誤,因為 Foo.BAR、Foo.BAZ 和 Foo.BAM 不被視為常數表達式。雖然它們在類別中被聲明為常數,但它們並未使用特定值進行初始化。常數表達式需要一個可以在編譯時計算的值,例如使用編譯時常數初始化的文字或最終變數。
要解決此問題,可以使用以下方式初始化Foo.BAR 常數編譯時常數值:
public abstract class Foo { public static final int BAR = 1; public static final int BAZ = 2; public static final int BAM = 3; }
這將允許switch 語句成功編譯,因為case 標籤現在將被評估為常數
或者,可以將常數宣告為枚舉,從而允許更簡潔的程式碼和更強型別的常數。但是,枚舉有一定的限制,例如需要預設大小寫和特定枚舉值作為大小寫標籤。
以上是為什麼 Java Switch 語句需要常數表達式作為 Case 標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!