Как искать в java enum? - PullRequest
       58

Как искать в java enum?

1 голос
/ 31 октября 2011

У меня есть набор констант, таких как:

public static final String CONST1="abc";
public static final String CONST2="cde";
public static final String CONST3="ftr";
...................................
public static final String CONSTN="zya";

В приложении мне нужно проверить, есть ли какое-либо значение в некотором наборе констант, например:

if (String val in [CONST1,CONST2,CONST3]) {
do something;}
else {
....

Этоможно сделать это с помощью enum?Или лучше использовать набор или массив?Спасибо.

Ответы [ 3 ]

7 голосов
/ 31 октября 2011

Что вам нужно, это Enum.valueOf ()

Возвращает константу перечисления указанного типа перечисления с указанное имя. Имя должно точно соответствовать идентификатору, используемому для объявить константу перечисления в этом типе. (Посторонние пробелы символы не допускаются.)

Вот пример того, что я обычно делаю при работе с Enums и, возможно, поступают «плохие» данные.

* * 1010

Вы также можете преобразовать Array значений из Option.values() в EnumSet и искать их и избегать возможных затрат Exception, если вы думаете, что будет много неверные данные.

4 голосов
/ 31 октября 2011

Вы можете использовать перечисления в выражении switch, как предложено @Dims:

switch (val) {
    case CONST1: case CONST2: case CONST3:
        do_something();
    break;
    case CONST4:
        do_something_else();
    break;
    default:
        // we should not be here?!?
    break;
}

, где я предполагаю, что val - это Enum.Вы можете создать его, как предложил @ jarrod-roberson:

    val = MyEnum.valueOf(stringValue);        
2 голосов
/ 31 октября 2011

Ознакомьтесь с java.util.EnumSet - это специальная реализация Set, оптимизированная для перечислений.

...