假设你有以下的枚举类型:
public enum Color {
RED("R"), GREEN("G"), BLUE("B");
private String shortName;
private Color(String shortName) {
this.shortName = shortName;
}
public static Color getColorByName(String shortName) {
for (Color color : Color.values()) {
if (color.shortName.equals(shortName)) {
return color;
}
}
throw new IllegalArgumentException("Illegal color name: " + shortName);
}
}
由于枚举是一种特殊情况,您无法仅覆盖valueOf函数,那么规避此问题并实现valueOf(String name)的命名约定是什么?
getColorByName(String name)
getValueOf(String name)
permissiveValueOf(String name)
customValueOf(String name)
forName(String name)
getEnum(String name)
getColor(String name)
后续编辑: 我看到Bloch在《Effective Java第二版》中提出了类似于getInstance()的东西(第1章,第1条)。 只是为了增加另一个选项。