TGViewer
Spring АйО Spring АйО @spring_aio · 10.9K subscribers
Post #663 6.17K
💡 JEP 507: Примитивы в pattern matching и switch — Java 25 ломает старые ограничения

Java 25 продолжает развивать pattern matching: теперь в instanceof и switch можно будет использовать примитивные типы!

В чем была проблема?
Раньше pattern matching работал только с объектами:


if (obj instanceof String s) { ... }
А вот так было нельзя:

if (x instanceof int i) { ... } // Ошибка


То же самое со switch — примитивы были ограничены: нельзя было использовать switch на boolean, float, double, long или с примитивными паттернами.

Что добавили?
Теперь можно будет:

Использовать примитивы в instanceof:


if (num instanceof byte b) { ... } // Автоматически проверит, влезает ли num в byte
Писать switch по boolean, long, float, double:

switch (flag) {
case true -> System.out.println("Да");
case false -> System.out.println("Нет");
}


Использовать примитивные паттерны в switch:


switch (value) {
case 0 -> System.out.println("Ноль");
case int i when i > 0 -> System.out.println("Положительное: " + i);
}


Почему это круто?

– упрощаются безопасные преобразования типов без ручных проверок диапазонов.
– убираются лишние if перед кастами.
– switch будет действительно универсальным: можно будет свитчить по любым типам.
– можно будет использовать примитивы в record-паттернах и instanceof так же просто, как объекты.

Пример:
Допустим, есть JSON:


sealed interface JsonValue { ... }
record JsonNumber(double d) implements JsonValue { }


Раньше:


if (json instanceof JsonNumber(double d)) {
int age = (int) d; // Ручной каст, возможна потеря данных
}


С Java 25:


if (json instanceof JsonNumber(int age)) {
System.out.println("Возраст: " + age);
}
// Сработает только если double без потери вмещается в int


Зачем это добавили?

Паттерны должны быть едиными как для объектов, так и для примитивов. Это делает язык мощнее, проще, безопаснее

Java 25 умеет проверять и безопасно преобразовывать примитивы прямо в instanceof и switch.

Как вам новая фича? Предлагаем обсудить комментариях👇
  • 👍 74
  • 🔥 29
  • ❤ 9
  • 🤔 3
  • 👎 1
More from @spring_aio
  1. Oct 6, 2026👩‍💻 Spring Config Import без магии У наших друзей из Axelix вышла статья о том, как Spri…
  2. Oct 5, 2026🥲 В Java 27 TLS научился переживать квантовую атаку При установке HTTPS-соединения клиент…
  3. Oct 3, 2026⚡️⚡️Строки кода стремятся подешеветь до цены токена. Что остается ценным? Про это — трек «…
  4. Oct 2, 2026🙅‍♂️ Не каждый AI-вызов должен генерировать текст Иногда от модели нужен не красивый отве…
  5. Oct 1, 2026JEP 544: JVM будет сохранять машинный код между запусками JEP 544 (Ahead-of-Time Code Comp…
  6. Sep 30, 2026🍃 Переписываем всё на Rust, JavaScript — кошмар, AI против Vaadin | Spring АйО Подкаст №7…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →