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

时间:2018-01-29 13:31:41

标签: 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);

1 个答案:

答案 0 :(得分:3)

您可以将此静态块添加到颜色枚举

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));