Angenommen, Sie haben die folgende Enum:Java - Enum valueOf „überschreiben“ Namenskonvention
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);
}
}
Da ENUM ist ein Sonderfall, wenn Sie nicht nur die valueOf Funktion außer Kraft setzen kann, was ist die Namenskonvention für dies umgehen und valueOf (String name) implementieren?
getColorByName(String name)
getValueOf(String name)
permissiveValueOf(String name)
customValueOf(String name)
forName(String name)
getEnum(String name)
getColor(String name)
Später Edit: Ich sehe, dass Bloch in Effective Java 2nd ed. schlägt etwas in den Zeilen von getInstance() vor (Kapitel 1, Punkt 1). Nur um eine weitere Option hinzuzufügen.
http://en.wikipedia.org/wiki/Method_overriding#Java Übergeordnete Methode hält den Namen. –
Auch Überladung behält den gleichen Namen, aber variiert die Signatur. Das klingt, als würden wir über ganz andere Namen sprechen ... –
Jungs ... wir sprechen über Enums. Sie können valueOf() und values () nicht überschreiben. Ich werde den Titel ändern, um darauf hinzuweisen. Aber bitte entferne deine Stimmen und gib mir eine Antwort. –