Если у вас есть String, а в enum нет метода getSomething (String str), как вы посмотрите значение enum? - PullRequest
0 голосов
/ 20 сентября 2011

Мне нужно установить значение перечисления следующим образом:

this.myEnum = ThirdPartyEnum.ABC;

Но имеющееся у меня значение не в форме Enum.

Это просто необработанная строка:

"ABC"

ThirdPartyEnum не имеет ThirdPartyEnum.lookupEnumForString().

Как перевести строку

"ABC"

до:

ThirdPartyEnum.ABC

Ответы [ 2 ]

4 голосов
/ 20 сентября 2011

Вы можете сделать

ThirdPartyEnum.valueOf("ABC");

Просто добавьте, и касаясь упомянутого вами метода lookupEnumForString(), если вы хотите найти перечисленное значение по одному из его атрибутов, вы можете использовать values(). Обратите внимание, что values() является общедоступным, и вы также можете использовать его в случае стороннего перечисления, над которым у вас нет контроля.

public enum MyEnum {

    VAL1("1"), VAL2("2");

    String attr;
    private MyEnum(String attr){
        this.attr = attr;
    }
    public String getAttr() { return attr; }

    public static MyEnum getByAttr(String searchAttr) {
        for(MyEnum t : values()){
            if(searchAttr.equals(t.getAttr())){
                return t;
            }
        }
    }
}
2 голосов
/ 20 сентября 2011

Попробуйте Enum.valueOf ()

Enum.valueOf ()

Или

ThirdPartyEnum.valueOf("ABC");

valueOf - метод по умолчанию, определенный для всех классов Java Enum.

Если вы занимаетесь функциональным программированием, Guava предоставляет метод для создания функции для получения значения.

Enums.valueOfFunction

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...