Switch-выражения
Switch как выражение, возвращающее значение — без break и без fall-through.
Сравнение кода
✕ Java 8
String msg;
switch (day) {
case MONDAY:
msg = "Start";
break;
case FRIDAY:
msg = "End";
break;
default:
msg = "Mid";
}
✓ Java 14+
String msg = switch (day) {
case MONDAY -> "Start";
case FRIDAY -> "End";
default -> "Mid";
};
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Возвращает значение
Присвоить результат switch напрямую — временная переменная не нужна.
Нет fall-through
Стрелочный синтаксис устраняет случайные ошибки fall-through из-за пропущенного break.
Проверка исчерпываемости
Компилятор обеспечивает охват всех случаев.
Старый подход
Оператор switch
Современный подход
Switch-выражение
Начиная с JDK
14
Сложность
Начинающий
Поддержка JDK
Switch-выражения
Доступно
Доступно в JDK 14 (март 2020)
Как это работает
Switch-выражения возвращают значение напрямую, используют стрелочный синтаксис для предотвращения ошибок fall-through, а компилятор проверяет исчерпываемость. Это заменяет подверженную ошибкам форму оператора.
Связанная документация
Доказательство