所以我将我们应用程序中的一些位域转换为使用 EnumSet,我很好奇是否有更好的方法来比较 X|Y。目前我们正在做类似的事情:
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()
方法的东西,但我没有看到任何似乎有这种效果的东西。