instanceof
Проверяет, является ли объект экземпляром типа, и сразу даёт переменную этого типа.
Доступно с: Java 1.0
Синтаксис
value instanceof Type nameПримеры
Проверка с объявлением переменной (pattern matching, Java 16):
void main() {
Object value = "hello";
if (value instanceof String s) {
IO.println(s.toUpperCase());
}
}Результат:
HELLOПеременная доступна и в условии после &&; для null результат false:
void main() {
Object[] values = {42, "text", -7, null};
for (Object v : values) {
if (v instanceof Integer n && n > 0) {
IO.println("positive: " + n);
}
}
IO.println(null instanceof Object);
}Результат:
positive: 42
falseПримечания
Раньше писали проверку и отдельное приведение: if (o instanceof String) { String s = (String) o; ... }. Форма с переменной делает то же короче. Когда вариантов много, удобнее switch с образцами типов.
См. также
- switch — Выбирает ветку по значению; в форме выражения возвращает результат.
- Object.getClass() — Возвращает класс объекта во время выполнения.
- sealed / permits — Ограничивает список классов, которым разрешено наследоваться от класса или реализовывать интерфейс.
Вопросы и ответы по теме
В учебнике
- Шаблоны в instanceof — Сопоставление с образцом для instanceof в Java — проверка типа и приведение в одной строке, область видимости переменной шаблона и отрицание.