Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

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 — проверка типа и приведение в одной строке, область видимости переменной шаблона и отрицание.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.