Допустим, вы имеете следующий перечисление:Java - перечисление 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)
Позже Edit: я вижу, что Блох в Effective Java 2-е изд. предлагает что-то в строках getInstance() (глава 1, пункт 1). Просто добавьте еще один вариант.
http://en.wikipedia.org/wiki/Method_overriding#Java Перекрытие метод сохраняет имя. –
Даже перегрузка сохраняет одно и то же имя, но меняет подпись. Это звучит так, будто мы говорим о совершенно разных именах ... –
Ребята ... мы говорим об перечислениях. Вы не можете переопределить valueOf() и values (). Я изменю название, чтобы указать на это. Но, пожалуйста, удалите свои голоса и дайте мне ответ. –