Содержимое, связанное с case
, должно быть совместимо с типом выражения, используемого в switch
.
. Вы используете int
(вероятно) в switch
, поэтому case
s должны иметь значения int
(или другой тип, конвертируемый в int
, например, char
).Проблема в том, что вы предоставляете boolean
, который не конвертируется в int
и что бы то ни было не то, что вы ищете.
JLS.14.11.Оператор switch действительно заявляет:
Если задан оператор switch, все следующее должно быть истинным, иначе произойдет ошибка времени компиляции:
Каждая константа case, связанная сОператор switch должен быть совместимым по присваиванию с типом Выражения оператора switch (§5.2).
Если два типа не совпадают, вы не хотите использовать switch
, а вместо этого используется ряд условных операторов (if-else-if
).