CodeGym /Cours /Bases de Java /Opérateur instanceof

Opérateur instanceof

Bases de Java
Niveau 4, Leçon 1
Disponible

« Bonjour, Amigo ! Tu as déjà rencontré l'opérateur instanceof. Aujourd'hui, je vais te dire comment et où il peut être utilisé. instanceof est un opérateur très simple et efficace. »

« On croirait que tu essaies de me le vendre ! »

« C'est vraiment très simple. On l'utilise comme ceci : 'objet' instanceof 'classe'. »

Il vérifie si un objet est une instance d'une classe particulière. C'est plus facile que l'explication peut le laisser penser. Regarde cet exemple :

Code Description
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt aura la valeur true. L'objet référencé par la variable o est une instance de la classe Integer.
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt aura la valeur false. L'objet référencé par la variable o n'est pas une instance de la classe Integer. C'est un objet String.
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFIS aura la valeur true. L'objet référencé par la variable o est une instance de la classe FileInputStream.
4
Mission
Bases de Java, niveau 4, leçon 1
Bloqué
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and assimilate some material. What's more, you combat laziness.

« Oui, c'est très simple. »

« Cet opérateur tient également compte de l'héritage. Regarde un peu. »

Code Description
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
Ici, nous avons trois déclarations de classe : Animal, Cat et Tiger. Cat hérite d'Animal. Et Tiger hérite de Cat.
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat aura la valeur true.
isTiger aura la valeur true.
isAnimal aura la valeur true.
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat aura la valeur false.
isTiger aura la valeur false.
isAnimal aura la valeur true.

Et même les interfaces :

Code Description
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
Création de deux classes : Cat, TomCat et de l'interface Moveable
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat aura la valeur true.
isMoveable aura la valeur true.
isTom aura la valeur true.
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat aura la valeur true.
isMoveable aura la valeur false.
isTom aura la valeur false.

L'opérateur instanceof ressemble à ceci : a instanceof B.

En d'autres termes, l'opérateur instanceof renverra true si :

1) la variable a stocke une référence à un objet de type B

2) la variable a stocke une référence à un objet dont la classe hérite de B

3) la variable a stocke une référence à un objet qui implémente l'interface B

Sinon, l'opérateur instanceof renvoie false.

« J'ai compris. Mais pourquoi est-ce nécessaire, tonton Rishi ? »

« Ellie t'expliquera tout à ce sujet aujourd'hui. C'est vraiment un opérateur très commode. Tu en seras pleinement convaincu aujourd'hui. »

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION