我有一个带有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/

10-12 02:02