我有两个具有相同值的枚举,一些方法使用一个枚举,一些方法使用另一个枚举。我想传递其中一个枚举类型来代替另一个。例如:
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);
您可以将此静态块添加到颜色枚举中
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));