Оператор instanceof в Java: полное руководство с примерами
Оператор instanceof в Java: полное руководство
Изучите, как работает оператор instanceof в Java, с понятными примерами базового использования, наследования и интерфейсов.
В Java оператор instanceof позволяет проверить, принадлежит ли объект к определенному классу или интерфейсу. Он возвращает true, если тип объекта во время выполнения соответствует указанному типу, иначе — false.
objectName instanceof className;
Ниже приведен простой пример демонстрации оператора с String и пользовательским классом.
Пример: Базовое использование instanceof
class Main { public static void main(String[] args) { String name = "Programiz"; boolean result1 = name instanceof String; System.out.println("name is an instance of String: " + result1); Main obj = new Main(); boolean result2 = obj instanceof Main; System.out.println("obj is an instance of Main: " + result2); } }
Вывод:
name is an instance of String: true obj is an instance of Main: true
Обе проверки возвращают true, потому что name действительно является String, а obj — экземпляром Main.
String — это ссылочный тип, а не примитив.Использование instanceof с наследованием
Оператор бесценен при работе с полиморфными иерархиями. Он подтверждает, что экземпляр подкласса также удовлетворяет типу суперкласса.
// Суперкласс class Animal {} // Подкласс class Dog extends Animal {} class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Dog); // true System.out.println(d1 instanceof Animal); // true } }
Как показано, d1 распознается и как Dog, и как Animal, отражая модель наследования Java.
Использование instanceof с интерфейсами
instanceof также проверяет, реализует ли объект определенный интерфейс.
interface Animal { } class Dog implements Animal { } class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Animal); // true } }
Здесь d1 — это Dog, реализующий Animal, поэтому оператор возвращает true.
java.lang.Object. Следовательно, любой объект также является экземпляром Object. Например:d1 instanceof Object
Это всегда будет оцениваться как true.
java
- Ключевое слово final в Java: переменные, методы и классы
- Наследование в Java: концепции, типы и практические примеры
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление
- Java 9: Diamond Operator (<>) для анонимных внутренних классов