假设您有以下枚举:
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)
稍后编辑:我在 Effective Java 2nd ed 中看到了 Bloch。在 getInstance() 行中提出了一些建议(第 1 章,第 1 项)。只是添加另一个选项。