Новый синтаксис оператора switch в Java 12
[Новый синтаксис оператора switch в Java 12]
Java 12 привносит новый вариант использования оператора switch. В случаях, если нам нужно сделать присвоение какой-либо переменной в зависимости от нужного условия в case, мы можем использовать новый синтаксис.
Как мы писали на Java конструкции с оператором switch? Примерно так:
public class SwitchOperatorOld {
public static void main(String[] args) {
// Так было до Java 12
Weekdays weekday = FRIDAY;
String typeOfDay;
switch (weekday) {
case MONDAY:
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
case FRIDAY:
typeOfDay = "будний день";
break;
case SATURDAY:
case SUNDAY:
typeOfDay = "выходной день";
break;
default:
throw new IllegalStateException("Неизвестный день недели!" + weekday);
}
System.out.println(weekday.getName() + " это " + typeOfDay);
}
}
public enum Weekdays {
MONDAY("Понедельник"),
TUESDAY("Вторник"),
WEDNESDAY("Среда"),
THURSDAY("Четверг"),
FRIDAY("Пятница"),
SATURDAY("Субботу"),
SUNDAY("Воскресенье");
private final String name;
Weekdays(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Как видите, множество значений в строках case существенно увеличивают общую высоту блока switch, снижая читаемость и повышая вероятность допустить ошибку при поддержке такого кода.
С новым синтаксическим сахаром в виде упрощённого оператора switch мы теперь можем писать куда более простые и удобочитаемые конструкции:
public class SwitchOperatorNew {
public static void main(String[] args) {
// Нововведение в Java 12
Weekdays weekday = FRIDAY;
String typeOfDay = switch (weekday) {
case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> "будний день";
case SATURDAY, SUNDAY -> "выходной день";
default -> throw new IllegalStateException("Неизвестный день недели!" + weekday);
};
System.out.println(weekday.getName() + " это " + typeOfDay);
}
}
Заметьте, что теперь мы маппим одно или несколько сравниваемых значений сразу на возвращаемое значение, упраздняя использование оператора break. А это, в свою очередь, снижает вероятность допустить ошибку.
Также мы можем использовать сразу несколько сравниваемых значений в блоке case, что повышает читаемость кода. Ведь мы может использовать несколько значение в одну строку и не раздувать тем самым код по высоте.
Новый синтаксис оператоа switch в Java 12 позволяет писать более краткий код. При этом читаемость нисколько не снижается, а наоборот — улучшается.
Новый синтаксис оператора switch в Java 12
Один комментарий
Лидия Пименова
Java 12 introduces new switch operator syntax.