Language Средний

Заменить цепочки if-else-instanceof чистыми паттернами типов в switch.

✕ Java 8
String format(Object obj) {
    if (obj instanceof Integer i)
        return "int: " + i;
    else if (obj instanceof Double d)
        return "double: " + d;
    else if (obj instanceof String s)
        return "str: " + s;
    return "unknown";
}
✓ Java 21+
String format(Object obj) {
    return switch (obj) {
        case Integer i -> "int: " + i;
        case Double d  -> "double: " + d;
        case String s  -> "str: " + s;
        default        -> "unknown";
    };
}
Заметили проблему в этом коде? Сообщите нам.
📐

Структурированная диспетчеризация

Switch делает структуру ветвления явной и понятной.

🎯

Форма выражения

Возвращает значение напрямую — изменяемая переменная не нужна.

Проверка исчерпываемости

Компилятор обеспечивает обработку всех типов.

Старый подход
Цепочка if-else
Современный подход
Паттерны типов
Начиная с JDK
21
Сложность
Средний
Pattern Matching в switch
Доступно

Доступно в JDK 21 LTS (сент. 2023)

Pattern matching в switch позволяет напрямую сопоставлять типы, объединяя проверку типа, приведение и привязку в лаконичной метке case. Компилятор проверяет полноту охвата.