#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'
Комментариев нет:
Отправить комментарий