是否有任何美观的方法可以根据其他两种枚举类型检索枚举值?我想做的是获取两个枚举参数的状态,如下例所示:
public enum State{
ONE_STATE,
SECOND_STATE;
THIRD_STATE;
public static State getState(Direction dir, Type type) {
if (dir.equals(Direction.LEFT) && type.equals(Type.BIG)) {
return ONE_STATE;
}
else if (dir.equals(Direction.RIGHT) && type.equals(Type.SMALL)) {
return SECOND_STATE;
}
else if (dir.equals(Direction.UP) && type.equals(Type.SMALL)) {
return FIRST_STATE;
}
return THIRD_STATE;
}
}
当然,这会说出来,但我的目的是让事情变得更清楚,因为这种可能性的数量会随着时间的推移而增加。
最佳答案
为什么不使用查找表?行数组 - 每行包含 2 个输入和一个输出。
LEFT, BIG, ONE_STATE
RIGHT, SMALL, SECOND_STATE
等等。并提供一个方法来查找并在查找失败时返回默认值。
如果做不到这一点,您可以调查 double dispatch
关于java - 给定参数的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15005719/