Так что я конвертирую некоторые битовые поля в нашем приложении, чтобы использовать EnumSet вместо этого, и мне любопытно, есть ли лучший способ сделать сравнение для X | Y. В настоящее время мы делаем что-то вроде:Проверка для/или с EnumSet
if(bitfield & (X | Y) != 0) {
//do stuff
}
The 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
Я собирался прокомментировать точку @ assylias. Вы, вероятно, правы, что это более читаемо, как люди для небольших наборов, просто кажется довольно подробным. – kcoppock
@assylias: Сделано, спасибо. –