因此,我將應用程序中的一些位域轉換爲使用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