instanceofКлючове слово - це двійковий оператор, який використовується для перевірки, чи об’єкт (екземпляр) є підтипом даного типу.
Уявіть собі:
interface Domestic {}
class Animal {}
class Dog extends Animal implements Domestic {}
class Cat extends Animal implements Domestic {}
Уявіть dog об’єкт , створений за допомогою Object dog = new Dog(), а потім:
dog instanceof Domestic // true - Dog implements Domestic
dog instanceof Animal // true - Dog extends Animal
dog instanceof Dog // true - Dog is Dog
dog instanceof Object // true - Object is the parent type of all objects
Однак Object animal = new Animal();,
animal instanceof Dog // false
тому що Animalце супертип Dogі, можливо, менш "доопрацьований".
І,
dog instanceof Cat // does not even compile!
Це тому, що Dogце не є ні підтипом, ні супертипом Cat, і він також не реалізує його.
Зауважте, що змінна, що використовується dogвище, має тип Object. Це показує instanceof, що це операція виконання, і приводить нас до випадку використання: реагувати по-різному залежно від типу об'єктів під час виконання .
Що слід зазначити: expressionThatIsNull instanceof Tпомилково для всіх типів T.
Щасливе кодування.