Страницы

Поиск по вопросам

суббота, 15 февраля 2020 г.

Не удается конвертировать String в enum

#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'

Комментариев нет:

Отправить комментарий