java - 给定参数的枚举值

标签 java enums

是否有任何美观的方法可以根据其他两种枚举类型检索枚举值?我想做的是获取两个枚举参数的状态,如下例所示:

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/

相关文章:

java - 如何将银行信息解析成特定格式,加java题

java - 用于查找引号之间匹配项的正则表达式

java - 是否可以在 android studio 中下载更多样式的小部件或者如何设计自己的小部件?

java - java中如何将表数据转换为XML格式

c# - 枚举的变量总是被初始化?

java - 修改方法中的枚举参数值

c# - bool 转换问题的枚举

typescript - 如何模拟 "T extends enum"通用约束?

java - 使用单个类构建 "parent/child"系统

java - 为什么这个枚举代码是对静态字段的非法引用?