与Enum一起制作类似IF的声明

时间:2013-11-21 02:45:34

标签: java if-statement enums

我如何根据Enum值制作类似If的声明。

My Enum gameStatus的状态为WON,LOST,CONTINUE和NOTSTARTED。我想根据当前的Enum值做出决定。

可以这样工作的东西:

if(gameStatus == WON)
{
    point++;
}
else if(gameStatus == LOST)
{
    point--;
}

2 个答案:

答案 0 :(得分:3)

你有一些合理的选择。您可以static import枚举字段:

import static com.example.foo.GameStatus.*;

或者使用枚举类型名称限定,以便您的代码看起来像

if(gameStatus == GameStatus.WON)
{
    point++;
}
else if(gameStatus == GameStatus.LOST)
{
    point--;
}

如果您使用switch代替if/else

,则可以避免这两种情况
switch (gameStatus) {
    case WON:
        point++;
        break;
    case LOST:
        point--;
        break;   
}

答案 1 :(得分:2)

您的场景中有第三个选项,即在枚举类上定义一个抽象方法,并覆盖该方法,以便根本没有if或switch!

   ...
   point = point + gameStatus.score();
   ...

    enum STATE {
      WIN {
            @Override
            public int score() {
                return 1;
            }
        }, 
      LOSE {
            @Override
            public int score() {
                return -1;
            }
        }
        public abstract int score();
    }