Перебирать EnumSet в Java? - PullRequest
5 голосов
/ 07 февраля 2012

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

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

    }

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

Как мне поступить с этим?

Ответы [ 2 ]

11 голосов
/ 07 февраля 2012
for(StateCommand command : stateCommands) {
   // do whatever
}

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

1 голос
/ 23 марта 2017

Если вы оставите EnumSet универсальный, будет работать NOT :

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...