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
.
Удачного кодирования.