[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-11-25-switch-expressions":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},406,"switch-expressions",11,"java-11-25","Java 11–25","🆕","Switch Expressions","Switch Expressions (финализированы в Java 14) превращают `switch` из statement в expression, возвращающее значение. Стрелочный синтаксис `->` исключает fall-through, `yield` возвращает значение из блока.\n\n### Старый vs новый switch\n\n| Свойство | Старый switch | Switch Expression |\n|----------|--------------|-------------------|\n| Тип | Statement | Expression (возвращает значение) |\n| Fall-through | Да (нужен `break`) | Нет |\n| Несколько значений | Каскад `case:` | `case A, B ->` |\n| Возврат из блока | `break` | `yield` |\n| Exhaustiveness | Не проверяется | Проверяется для enum\u002Fsealed |\n\n```java\n\u002F\u002F Старый switch (statement, fall-through)\nString result;\nswitch (day) {\n    case MONDAY:\n    case TUESDAY:\n        result = \"Начало недели\";\n        break;\n    case FRIDAY:\n        result = \"Пятница!\";\n        break;\n    default:\n        result = \"Обычный день\";\n        break;\n}\n\n\u002F\u002F Новый switch (expression, no fall-through)\nString result = switch (day) {\n    case MONDAY, TUESDAY -> \"Начало недели\";\n    case FRIDAY          -> \"Пятница!\";\n    default              -> \"Обычный день\";\n};\n\n\u002F\u002F Блок с yield\nint numLetters = switch (day) {\n    case MONDAY, FRIDAY, SUNDAY -> 6;\n    case TUESDAY                -> 7;\n    default -> {\n        String s = day.toString();\n        yield s.length(); \u002F\u002F yield вместо return\n    }\n};\n```\n\n### Частые ошибки\n\n- Забыть `yield` в блоке — `return` не работает в switch expression; используйте `yield`\n- Смешивание `->` и `:` — в одном switch нельзя комбинировать стрелочный и двоеточный стиль\n- `default` для sealed\u002Fenum — скрывает ошибки при добавлении нового варианта; компилятор не предупредит\n\n### Как используется в 2026\n\n- Switch expression — стандартный стиль; старый `switch` с `break` — legacy\n- Комбинируется с Pattern Matching (Java 21) для мощных деконструкций\n- IDE автоматически предлагает рефакторинг старого `switch` в expression\n\n> **На собеседовании:** ключевые моменты — отсутствие fall-through, `yield` вместо `return` в блоке, exhaustiveness check для enum\u002Fsealed. Частая ошибка — путать `yield` и `return`.","","junior",[15],"java-modern",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Switch Expressions — Gymterview","Switch Expressions (финализированы в Java 14) превращают `switch` из statement в expression, возвращающее значение. Стрелочный синтаксис `->` исключает fall-thr","Switch Expressions (финализированы в Java 14) превращают `switch` из statement в expression, возвращающее значение. Стре",[15,13],"Switch Expressions (финализированы в Java 14) превращают `switch` из statement в expression, возвращающее значение. Стрелочный синтаксис `->` исключает fall-through, `yield` возвращает значение из блока.",true]