我有一个带有4个值的枚举,并且我有一个接受一个枚举值的方法签名。我希望能够对所有未作为doSomething()参数传递的枚举值进行处理。
public void doSomething(EnumThing thing){
EnumThing[] thingValues = EnumThing.values();
List<EnumThing> valuesNotPassedAsArg = new ArrayList<EnumThing>();
for(EnumThing th : thingValues){
valuesNotPassedAsArg.add(th);
}
valuesNotPassAsArg.remove(thing);
//here I would loop through all valuesNotPassAsArg and do something with them
}
public enum EnumThing{
SOMETHING, SOMETHINGELSE, ANOTHERTHING;
}
有没有更清洁的方法可以做到这一点?我觉得好像从thingValues数组中获取项目的循环是多余的。
最佳答案
查看EnumSet
。具体来说,
import java.util.EnumSet;
import static java.util.EnumSet.complementOf;
for (EnumThing t : complementOf(EnumSet.of(thing))) {
... do the work ...
}
关于java - 遍历枚举值的子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14224059/