2012-02-07 10 views
4

Когда я создаю EnumSet и отправляю его через функцию, я не могу достичь значений Enum, установленных внутри EnumSet. Все, что я могу сделать, это сравнить его с оригинальным набором и проверить, присутствует ли он. Я не хочу этого, потому что это заставляет меня тратить впустую строки кода и заставляет меня каждый раз обращаться к первому классу Enum.Итерации через EnumSet в java?

for(Action a : Action.values()) 
    { 
     if(stateCommands.contains(a)) 
     { 
      System.out.println(a.getCommand() + a.getDescription()); 
     } 

    } 

Я хочу перебирать через stateCommands и иметь возможность видеть его содержимое.

Как я могу продолжить это?

ответ

10
for(StateCommand command : stateCommands) { 
    // do whatever 
} 

Как и любой другой Set. Или, если вам нужно сделать что-то более сложное, просто используйте stateCommands.iterator().

1

Если оставить EnumSet родовое, следующее НЕ работы:

public void StateLoop(EnumSet stateCommands){ 
    //won't work b/c stateCommands is treated as a generic Object 
    for(StateCommand command : stateCommands) { 
     // do whatever 
    } 
} 

Однако, если тип предусмотрен для EnumSet он будет работать нормально:

public void StateLoop(EnumSet<StateCommand> stateCommands){ 
    for(StateCommand command : stateCommands) { 
     // do whatever 
    } 
} 
Смежные вопросы