我有一個final class Ring
定義爲:Case表達式必須是static final int的常量表達式嗎?
我也有以下代碼public class MorrisBoard
:
public class MorrisBoard {
public static final Ring RING = new Ring();
private boolean checkMillBy(int ring, int x, int y) {
switch(ring) {
case MorrisBoard.RING.OUT:
//...
case MorrisBoard.RING.MID: //etc.
//...
}
return false;
}
MorrisBoard.RING.OUT
引用的變量而言是不可變的程序的生命週期。所有的值都是最終的。
但是,我仍然收到以下錯誤:case expressions must be constant expressions
。我很困惑 - MorrisBoard.RING.OUT
是一個常數表達式。
這是怎麼回事?
它必須是一個_compile時間常數_和'RING'不是,它是在運行時分配的。 –
僅供參考:考慮使用'enum'而不是一堆'final static' ... –
沒有必要創建一個沒有任何實例成員的類的實例,即只有靜態成員 –