Switch Expressions

Switch Expressions

miniJUG

Switch в Java сможет возвращать значения

Вчера на сайте 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, если он покрывает все возможные значения перечисления.

JEP 325 является только началом, и в дальнейшем планируется добавить в switch поддержку полноценного паттерн-матчинга.

Обсудить новость

Подписаться на канал в Telegram


Report Page