Предположим, что у меня есть n boolean values, где n - относительно небольшое число (3-5 или около того). Предположим, что значения - это свойства класса, каждый из которых может быть установлен или отключен независимо. Итак, есть 2 n возможные комбинации. Теперь я хочу различать эти комбинации переключающим образом. В настоящее время я обычно делаю что-то вроде этого:Конструкция переключателя для комбинаций булевых координат
int mask = (bool1 ? 1 : 0) +
(bool2 ? 2 : 0) +
(bool3 ? 4 : 0) +
... ;
switch (mask) {
case 0b000:
// all variables false
case 0b001:
// only bool1 true
case 0b011:
// only bool1 and bool2 true
...
}
Это работает хорошо, но я не считаю его очень изящным. Есть ли какая-то передовая практика (на Java) или идиома Java для таких случаев?
Почему вы не используете инструкцию if? Это будет гораздо более читаемым, чем этот переключатель. – DontRelaX
Этот ** может быть более подходит для [обзора кода] (http://codereview.stackexchange.com/), хотя и не голосовал, чтобы закрыть сомнения. – Mena
@ DontRelaX Theres несколько способов сделать ifs, почему бы вам не поместить ваше предпочтение в качестве ответа. И подумайте, как это будет выглядеть, если у вас 5 балов. – weston