Вчера на сайте OpenJDK появился новый JEP 325, в котором предлагается ввести в язык улучшенный оператор switch. Мотивацией для введения является то, что старый switch имеет несколько фундаментальных изъянов, которые нельзя исправить, не нарушив обратную совместимость. Во-первых, старый switch является императивной конструкцией, которая не может возвращать выражения и заставляет писать большое количество повторяющегося кода. Во-вторых, старый switch всегда являлся большим источником ошибок из-за своей необходимости явно завершать ветви оператором break, отсутствие которого приводит к «проваливанию» (fall-through). Кроме того, старый switch не имеет возможности обработать случай, когда аргумент является null.
Новый switch решает все вышеописанные проблемы: он может возвращать значения, сокращает объём необходимого кода, меньше провоцирует на ошибки и позволяет обрабатывать null.
В новом switch оператор break сможет возвращать значения:
case LABEL: break expression;
Того же самого эффекта также можно достигнуть с использованием более короткой формы:
case LABEL -> expression;
Ветви switch будут поддерживать множественные варианты: 
case SATURDAY, SUNDAY -> "weekend";
Обработка null:
case null -> expression;
Кроме всего прочего, новый switch упразднит необходимость явного написания ветви default, если он покрывает все возможные значения перечисления:
int numLetters = switch (day) { // DayOfWeek day case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; }
JEP 325 является только началом, и в дальнейшем планируется добавить в switch поддержку полноценного паттерн-матчинга.