Language Начинающий

Совместить проверку типа и приведение в одном шаге с помощью pattern matching.

✕ Java 8
if (obj instanceof String) {
    String s = (String) obj;
    int length = s.length();
    // do something with 'length'
}
✓ Java 16+
if (obj instanceof String s) {
   int length = s.length();
    // do something with 'length'
}
Заметили проблему в этом коде? Сообщите нам.
🔄

Нет лишнего приведения

Проверка типа и привязка переменной происходят в одном выражении.

📏

Меньше строк

Одна строка вместо двух — строка с приведением исчезает полностью.

🛡️

Безопасность области видимости

Переменная паттерна находится в области видимости только там, где тип гарантирован.

Старый подход
instanceof + приведение типа
Современный подход
Переменная паттерна
Начиная с JDK
16
Сложность
Начинающий
Pattern Matching для instanceof
Доступно

Доступно в JDK 16 (март 2021)

Pattern matching для instanceof устраняет избыточное приведение после проверки типа. Переменная автоматически ограничена областью видимости, в которой паттерн совпадает, что делает код безопаснее и короче.