我如何根据Enum值制作类似If的声明。
My Enum gameStatus的状态为WON,LOST,CONTINUE和NOTSTARTED。我想根据当前的Enum值做出决定。
可以这样工作的东西:
if(gameStatus == WON)
{
point++;
}
else if(gameStatus == LOST)
{
point--;
}
答案 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();
}