新手在这里。我想将switch语句转换为使用枚举。我创建了枚举,在switch语句中使用了它,但后来我无法弄清楚如何将c
传入其中以返回适当的值。
转换方法:
public String convert(String c) {
switch(c) {
case "red":
return "purple";
case "yellow":
return "orange";
default:
return c;
}
}
Enum我尝试过但没有工作:
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;
}
}
非常感谢您的帮助。
答案 0 :(得分:3)
这样的事情是最干净的方式 - 你甚至不需要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"));
}
答案 1 :(得分:1)
您需要向Enum添加一个查找方法,以通过传入字符串
来返回枚举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方法时,您可以将字符串传递给查找方法
convert(colorChange.lookup("red"))