Что дают switch-выражения, text blocks и сопоставление с образцом в современной Java?
- Что такое switch expression?
- Что такое pattern matching для instanceof?
Switch-выражение (Java 14) возвращает значение, использует стрелки case A -> ... без проваливания и требует покрыть все варианты (для enum и sealed — проверяет компилятор). Text blocks (Java 15) — многострочные строки в тройных кавычках """ без экранирования переводов строк — удобно для SQL и JSON. Pattern matching для instanceof (Java 16) — if (obj instanceof String s) сразу даёт переменную нужного типа; в Java 21 шаблоны работают и в switch, включая record-шаблоны.
- Нет break и случайного проваливания между case
- Несколько меток: case SAT, SUN -> "выходной"
- yield — вернуть значение из блока case
А ещё Вместе с sealed и record это даёт компактную и проверяемую обработку вариантов
Подробно
String type = switch (day) {
case SAT, SUN -> "выходной";
default -> "будни";
};
String sql = """
SELECT id, name
FROM users
WHERE active
""";
if (shape instanceof Circle c) {
return Math.PI * c.r() * c.r();
}
double area = switch (shape) {
case Circle c -> Math.PI * c.r() * c.r();
case Square s -> s.side() * s.side();
};Что хотят услышать
- Switch-выражения со стрелками и полнотой.
- Text blocks.
- Pattern matching в instanceof и switch.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Switch-выражение возвращает значение без проваливания, text blocks — многострочные строки
- ✗Switch-выражение со стрелками по-прежнему проваливается в следующий case без break
- ✗Text blocks требуют экранировать каждый перевод строки и каждую кавычку внутри текста
- ✗Pattern matching доступен только в Java 8
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.