假設你有以下枚舉:爪哇 - 枚舉的valueOf「覆蓋」命名約定
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)
後來編輯: 我看到布洛赫有效的Java第二版。根據getInstance()(第1章,第1項)提出了一些建議。 只是添加另一個選項。
http://en.wikipedia.org/wiki/Method_overriding#Java 重寫方法保持名稱。 –
即使重載也保持相同的名稱,但會改變簽名。這聽起來像我們在談論完全不同的名字...... –
夥計們......我們正在談論枚舉。您無法覆蓋valueOf()和values()。我會改變標題來指出這一點。但請刪除您的不滿意票並給我一個答案。 –