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
.
Щасливе кодування.