instanceof
mot-clé est un opérateur binaire utilisé pour tester si un objet (instance) est un sous-type d'un type donné.
Imaginer:
interface Domestic {}
class Animal {}
class Dog extends Animal implements Domestic {}
class Cat extends Animal implements Domestic {}
Imaginez un dog
objet , créé avec Object dog = new Dog()
, puis:
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
Cependant, avec Object animal = new Animal();
,
animal instanceof Dog // false
parce que Animal
c'est un supertype Dog
et peut-être moins «raffiné».
Et,
dog instanceof Cat // does not even compile!
En effet, ce Dog
n'est ni un sous-type ni un supertype de Cat
, et il ne l'implémente pas non plus.
Notez que la variable utilisée dog
ci-dessus est de type Object
. Il s'agit de montrer qu'il instanceof
s'agit d'une opération d' exécution et nous amène à un cas d'utilisation: réagir différemment en fonction d'un type d'objets à l'exécution .
Choses à noter: expressionThatIsNull instanceof T
est faux pour tous les types T
.
Bon codage.