#java #enum
public enum Colors {
WHITE("white"), LIGHT_GRAY("lightGray"), GRAY("gray"),
DARK_GRAY("darkGray"), BLACK("black"), RED("red"), PINK("pink"),
ORANGE("orange"), YELLOW("yellow"), GREEN("green"), MAGENTA("magenta"),
CYAN("cyan"), BLUE("blue");
private final String name;
private Colors(String _name) {
name = Colors.fromString(_name);//здесь компилятор ругается incompatible types
}
public String getName() {
return name;
}
public static Colors fromString(String _name) {
if (_name != null) {
for (Colors clr : Colors.values()) {
if (_name.equalsIgnoreCase(clr.name)) {
return clr;
}
}
}
throw new IllegalArgumentException("No such value");
}
}
Ответы
Ответ 1
Вы неправильно использовали конструктор для Enum. Кроме того, обычно Enum именуется существительным в единцественном числе. public static void main(String[] args) throws Exception { System.out.println(Color.fromString("black")); System.out.println(Color.fromString("BlaCk")); System.out.println(Color.fromString("qqq")); } public enum Color { WHITE("white"), LIGHT_GRAY("lightGray"), GRAY("gray"), DARK_GRAY("darkGray"), BLACK("black"), RED("red"), PINK("pink"), ORANGE("orange"), YELLOW("yellow"), GREEN("green"), MAGENTA("magenta"), CYAN("cyan"), BLUE("blue"); private final String name; Color(String name) { this.name = name; } public String getName() { return name; } public static Color fromString(String name) { for (Color color : Color.values()) { if (color.name.equalsIgnoreCase(name)) { return color; } } throw new IllegalArgumentException("No such value '" + name + "'"); } } Результат: BLACK BLACK Exception in thread "main" java.lang.IllegalArgumentException: No such value 'qqq'
Комментариев нет:
Отправить комментарий