因此,我将应用程序中的一些位域转换为使用EnumSet,我很好奇是否有更好的方法来对X | Y进行比较。目前,我们这样做:检查是否使用EnumSet
if(bitfield & (X | Y) != 0) {
//do stuff
}
的EnumSet相当于似乎是:
if(enumSet.contains(X) || enumSet.contains(Y)) {
//do stuff
}
有一个更清洁的方式做到这一点?我知道你可以检查containsAll()
像这样:
EnumSet flagsToCheck = EnumSet.of(X, Y);
if(enumSet.containsAll(flagsToCheck)) {
//do stuff
}
但是,这对于要知道,如果(X & Y)
设置的场景。有没有相当的方法来检查(X | Y)
?我会认为会有类似containsAny()
的方法,但我没有看到任何似乎有这种效果的东西。
您可能想要相反('!valid.retainAll(enumSet)')来避免更改原始集合。 – assylias 2013-02-25 19:56:12
我正要评论@ assylias的观点。你可能是正确的,它作为小集合的个体更具可读性,看起来有点冗长。 – kcoppock 2013-02-25 19:57:21
@assylias:完成,谢谢。 – 2013-02-25 20:08:44