← Назад к вопросам

Что такое instanceof в Java?

1.3 Junior🔥 141 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Оператор instanceof в Java

instanceof — это оператор для проверки типа объекта во время выполнения программы (runtime type checking). Он позволяет определить, является ли объект экземпляром конкретного класса или интерфейса.

Синтаксис

объект instanceof Тип

Оператор возвращает boolean: true, если объект является экземпляром указанного типа (или наследуется от него), и false в противном случае.

Примеры использования

class Animal {}
class Dog extends Animal {}

Animal myDog = new Dog();

if (myDog instanceof Dog) {
    System.out.println("myDog является Dog");
}

if (myDog instanceof Animal) {
    System.out.println("myDog является Animal");
}

Ключевые особенности

1. Проверка наследования: Оператор возвращает true для точного типа и всех его родительских типов.

List<String> list = new ArrayList<>();
if (list instanceof List) {
    System.out.println("ArrayList является List");
}

2. Null безопасность: Если объект равен null, оператор всегда возвращает false.

Object obj = null;
if (obj instanceof String) {
    System.out.println("Это никогда не выполнится");
}

3. Pattern Matching (Java 16+): Проверка и приведение типа одновременно.

if (obj instanceof String str) {
    System.out.println(str.length());
}

Практический пример

List<Object> items = Arrays.asList("Hello", 42, 3.14);

for (Object item : items) {
    if (item instanceof String) {
        System.out.println("Строка: " + item);
    } else if (item instanceof Integer) {
        System.out.println("Число: " + item);
    }
}

Когда использовать

  • Проверка перед приведением типов
  • Полиморфная обработка объектов разных типов
  • Условная логика в зависимости от типа

Когда избегать

Чрезмерное использование instanceof указывает на неправильный дизайн. Лучше использовать полиморфизм и переопределение методов.

shape.draw();  // вместо множества instanceof проверок

instanceof — мощный инструмент для runtime type checking, но его переизбыток может свидетельствовать о неправильной архитектуре.