当我创建一个EnumSet并通过一个函数发送它时,我发现自己无法达到EnumSet中设置的Enum值。我只能将它与原始集进行比较,并检查它是否存在。我不希望这样,因为这会迫使我浪费一些代码,迫使我每次都要接触原始Enum课程。
for(Action a : Action.values())
{
if(stateCommands.contains(a))
{
System.out.println(a.getCommand() + a.getDescription());
}
}
我想遍历stateCommands并能够看到它的内容。
我该如何处理?
答案 0 :(得分:11)
for(StateCommand command : stateCommands) {
// do whatever
}
就像其他Set
一样。或者,如果您需要做更复杂的事情,只需使用stateCommands.iterator()
。
答案 1 :(得分:1)
如果您将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提供了一个Type,它将正常工作:
public void StateLoop(EnumSet<StateCommand> stateCommands){
for(StateCommand command : stateCommands) {
// do whatever
}
}