【发布时间】:2013-02-11 01:59:03
【问题描述】:
所以我将应用程序中的一些位域转换为使用 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() 的方法,但我没有看到任何似乎有这种效果的东西。
【问题讨论】:
标签: java enums bit-fields enumset