Учитывая выбор дней недели, мне нужно знать, совпадает ли указанный c день с выбором.
Например, задано:
enum DayOfWeek {
MON, TUE, WED, THU, FRI, SAT, SUN
}
И следующее выбор:
List<DayOfWeek> selection = List.of(MON, WED);
Если день недели данного дня равен MON
или WED
, то он должен совпадать, иначе не должен.
Простой подход:
boolean match = selection.contains(day.getDayOfWeek());
Мне интересно, есть ли способ создать маску из выбора и определить, совпадает ли данный день только с базовыми c операторами (+ - * / % AND OR NOT EQ LT LTE GT GTE
, битовые операторы не допускаются).
Например, при том же выборе:
int mask = 1010000; // just an example of a mask, can be any other
Тогда:
boolean match = fn(mask, day.getDayOfWeek());
Может ли существовать такой mask
, чтобы можно было записать fn
с базисом c только для операторов?