Pattern Matching для instanceof
Совместить проверку типа и приведение в одном шаге с помощью pattern matching.
Сравнение кода
✕ Java 8
if (obj instanceof String) {
String s = (String) obj;
System.out.println(s.length());
}
✓ Java 16+
if (obj instanceof String s) {
IO.println(s.length());
}
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Нет лишнего приведения
Проверка типа и привязка переменной происходят в одном выражении.
Меньше строк
Одна строка вместо двух — строка с приведением исчезает полностью.
Безопасность области видимости
Переменная паттерна находится в области видимости только там, где тип гарантирован.
Старый подход
instanceof + приведение типа
Современный подход
Переменная паттерна
Начиная с JDK
16
Сложность
Начинающий
Поддержка JDK
Pattern Matching для instanceof
Доступно
Доступно в JDK 16 (март 2021)
Как это работает
Pattern matching для instanceof устраняет избыточное приведение после проверки типа. Переменная автоматически ограничена областью видимости, в которой паттерн совпадает, что делает код безопаснее и короче.
Связанная документация
Доказательство