我该如何基于Enum值进行If like语句。
我的枚举游戏状态有WON、LOST、CONTINUE和NOTSTARTED状态。我想根据当前Enum值做出决定。
像这样工作的东西:
if(gameStatus == WON)
{
point++;
}
else if(gameStatus == LOST)
{
point--;
}
您有一些合理的选择。您可以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;
}
您的场景中有第三个选项,那就是在enum类上定义一个抽象方法,并重写该方法,这样就根本没有if-else或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();
}