提问者:小点点

映射 2 个枚举,具有 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个答案

匿名用户

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

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