java - 映射具有在 2 个库之间共享的相同值的 2 个枚举

标签 java enums

我有 2 个具有相同值的枚举,一些方法使用一个枚举,一些方法使用另一个。我想传递一种枚举类型来代替另一种。例如:

public enum Colors { RED, BLUE, GREEN }

public enum ScreenColors { RED, BLUE, GREEN }

public void myFunc(Colors color) {
    // Some code
}

// Want to call this as:
myFunc(ScreenColors.RED);

最佳答案

你可以将这个静态 block 添加到颜色枚举中

private static final Map<Colors, ScreenColors> LOOK_UP = new HashMap<>();

static {
    for (Colors value : EnumSet.allOf(Colors.class)) {
        LOOK_UP.put(value, ScreenColors.valueOf(value.name());
    }
}

public static ScreenColors forColors(Colors color) {
    return LOOK_UP.get(color);
}

然后你可以调用

myFunc(Colors.forColors(ScreenColors.RED));

关于java - 映射具有在 2 个库之间共享的相同值的 2 个枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48502479/

相关文章:

java - SocketImpl Setoption 中的套接字关闭异常

java - 如何截取自定义形状的屏幕截图?

java - 模式 "YYYY-MM-dd HH:mm:ss Z"导致解析异常,而 Jodatime 没有

java - 使用 Eclipse 的 Weblogic 连接池

reactjs - 为什么在枚举中类型没有重叠?

c# - 将 Combobox 绑定(bind)到一个枚举,一个枚举元素除外

java - 有没有办法检查一个变量是否在 Java 中定义?

c# - 按枚举名称排序查询结果

Java 枚举 - 自定义 getValues() 与 values()

java - 如果枚举类是Java方法中的参数,如何获取枚举值?