Примитивные типы в паттернах
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
Примитивные типы в паттернах
Предварительный просмотр
Предварительный просмотр в JDK 25 (третий превью, JEP 507). Требует --enable-preview.
Как это работает
Java 25 расширяет pattern matching на примитивные типы. int, long, double и т.д. можно использовать в паттернах switch с охранниками when, что избавляет от боксинга и ручных проверок диапазонов.
Связанная документация
Доказательство