Language Продвинутый

Pattern matching теперь работает и с примитивными типами, а не только с объектами.

✕ Java 8
String classify(int code) {
    if (code >= 200 && code < 300)
        return "success";
    else if (code >= 400 && code < 500)
        return "client error";
    else
        return "other";
}
✓ Java 25 (Preview)
String classify(int code) {
    return switch (code) {
        case int c when c >= 200
            && c < 300 -> "success";
        case int c when c >= 400
            && c < 500 -> "client error";
        default -> "other";
    };
}
Заметили проблему в этом коде? Сообщите нам.
📦

Нет боксинга

Сопоставлять примитивы напрямую — обёртка Integer не нужна.

🎯

Единообразие паттернов

Одинаковый синтаксис паттернов для объектов и примитивов.

Лучшая производительность

Избежать накладных расходов автобоксинга при pattern matching.

Старый подход
Ручные проверки диапазонов
Современный подход
Примитивные паттерны
Начиная с JDK
25
Сложность
Продвинутый
Примитивные типы в паттернах
Предварительный просмотр

Предварительный просмотр в JDK 25 (третий превью, JEP 507). Требует --enable-preview.

Java 25 расширяет pattern matching на примитивные типы. int, long, double и т.д. можно использовать в паттернах switch с охранниками when, что избавляет от боксинга и ручных проверок диапазонов.