🔀 Switch Expressions: Прощай,
Помните это чувство, когда забыл написать
В современных версиях Java (стандарт с Java 14) оператор
💀 Было (Statement)
Громоздко, опасно (fall-through), переменная вынесена наружу.
✅ Стало (Expression)
Лаконично, безопасно, функционально.
🚀 Главные фишки
1. Стрелочный синтаксис (
Если используется стрелка, переход к следующему кейсу (fall-through) отключен по умолчанию. Никаких
2. Возврат значения
3. Несколько условий в одну строку
🛑 Сложная логика и
Что делать, если в одном
Для этого появились фигурные скобки и ключевое слово
Важно:
⚡ Exhaustiveness (Полнота)
Если вы делаете
🔥 Итог
Новый
🔴 Используйте
🔴 Используйте
#Java #SwitchExpression #CleanCode #NewJava
📲 Мы в MAX
👉@BookJava
break!Помните это чувство, когда забыл написать
break в switch-case, и код пошел выполняться дальше, создав неуловимый баг? 😫В современных версиях Java (стандарт с Java 14) оператор
switch прокачали. Теперь это не просто управляющая конструкция, а выражение, возвращающее результат.💀 Было (Statement)
Громоздко, опасно (fall-through), переменная вынесена наружу.
DayOfWeek day = DayOfWeek.SATURDAY;
int numLetters;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break; // Забыл break? Получи баг!
case TUESDAY:
numLetters = 7;
break;
default:
throw new IllegalStateException("Wat: " + day);
}
✅ Стало (Expression)
Лаконично, безопасно, функционально.
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
default -> throw new IllegalStateException("Wat: " + day);
};
🚀 Главные фишки
1. Стрелочный синтаксис (
->)Если используется стрелка, переход к следующему кейсу (fall-through) отключен по умолчанию. Никаких
break больше писать не надо!2. Возврат значения
switch теперь работает как формула. Вы можете сразу присвоить результат переменной или вернуть его из метода (return switch(...)).3. Несколько условий в одну строку
case MONDAY, FRIDAY, SUNDAY — просто перечисляем через запятую.🛑 Сложная логика и
yieldЧто делать, если в одном
case нужно не просто вернуть число, а выполнить несколько строк кода (например, залоггировать)?Для этого появились фигурные скобки и ключевое слово
yield.Важно:
return использовать нельзя, так как он прервет выполнение всего метода, а не только свича.
String result = switch (day) {
case SATURDAY, SUNDAY -> "Выходной";
case MONDAY -> {
System.out.println("Тяжелый день...");
yield "Будни"; // yield возвращает значение из switch
}
default -> "Будни";
};
⚡ Exhaustiveness (Полнота)
Если вы делаете
switch по Enum, компилятор проверит, все ли варианты вы обработали. Если добавите в Enum новый день, а в свич - нет, код просто не скомпилируется. Это отличная защита от забывчивости!🔥 Итог
Новый
switch это чистый кайф. Он делает код компактнее и убирает целый класс ошибок, связанных с пропущенными break.->, когда нужно просто сопоставить значение.yield, если нужна логика внутри блока.#Java #SwitchExpression #CleanCode #NewJava
👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3😁1