移动 switch 语句以使用枚举

Move switch statement to use Enum

这里是新手。我想将 switch 语句转换为使用枚举。我创建了枚举,在 switch 语句中使用了它,但后来我不知道如何将 c 传递给 return 适当的值。

转换方法:

public String convert(String c) {
    switch(c) {
        case "red":
            return "purple";
        case "yellow":
            return "orange";
        default:
            return c;
    }
}

我试过但没有用的枚举:

public enum colorChange {

RED("purple"),
YELLOW("orange");

private final String color;

private colorChange(String color) {
    this.color = color;
}

public String getcolor() {
    return color;

最终,我想要做的是这样的:

public String convert(String c) {
switch(c) {
    case RED:
        return RED.getcolor();
    case YELLOW:
        return YELLOW.getcolor();
    default:
        return c;
}

}

非常感谢您的帮助。

像这样的事情是最简洁的方法 - 你甚至不需要 switch

public enum ColorChange {

    RED("purple"),
    YELLOW("orange");

    private final String color;

    ColorChange(String color) {
        this.color = color;
    }

    public static String change(String color) {
        return valueOf(color.toUpperCase()).color;
    }
}

public void test(String[] args) {
    System.out.println("red -> "+ColorChange.change("red"));
}

您需要通过传入一个字符串

向您的枚举添加一个return枚举的查找方法
public static colorChange lookup(String color) {
    for (colorChange c : colorChange.values())
        if(c.getcolor().equals(color))
            return c;

    return null;
 }

那么你的转换方法应该接受一个枚举而不是一个字符串:

public String convert(colorChange c) {
switch(c) {
    case RED:
        return RED.getcolor();
    case YELLOW:
        return YELLOW.getcolor();
    default:
        return c;
  }
}

并且当您调用转换方法时,您可以将字符串传递给查找方法

convert(colorChange.lookup("red"))