L'opérateur instanceof en Java : guide complet
L'opérateur instanceof en Java : guide complet
Explorez le fonctionnement de l'opérateur instanceof en Java, avec des exemples clairs couvrant l'usage de base, l'héritage et les interfaces.
En Java, l'opérateur instanceof permet de vérifier si un objet appartient à une classe ou interface spécifique. Il retourne true si le type d'exécution de l'objet correspond au type spécifié, sinon false.
nomObjet instanceof nomClasse;
Voici un exemple simple démontrant l'opérateur avec un String et une classe définie par l'utilisateur.
Exemple : Usage basique de instanceof
class Main { public static void main(String[] args) { String name = "Programiz"; boolean result1 = name instanceof String; System.out.println("name est une instance de String : " + result1); Main obj = new Main(); boolean result2 = obj instanceof Main; System.out.println("obj est une instance de Main : " + result2); } }
Sortie
name est une instance de String : true obj est une instance de Main : true
Les deux vérifications retournent true car name est bien un String et obj est une instance de Main.
Note : En Java, String est un type référence, pas un type primitif.
Utiliser instanceof avec l'héritage
L'opérateur est inestimable quand on travaille avec des hiérarchies polymorphiques. Il confirme qu'une instance de sous-classe satisfait aussi son type de superclasse.
// Superclasse class Animal {} // Sous-classe class Dog extends Animal {} class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Dog); // true System.out.println(d1 instanceof Animal); // true } }
Comme montré, d1 est reconnu à la fois comme un Dog et un Animal, reflétant le modèle d'héritage de Java.
Utiliser instanceof avec les interfaces
instanceof vérifie aussi si un objet implémente une interface particulière.
interface Animal { } class Dog implements Animal { } class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Animal); // true } }
Ici, d1 est un Dog qui implémente Animal, donc l'opérateur retourne true.
Note : Toute classe Java étend finalement java.lang.Object. Par conséquent, tout objet est aussi une instance de Object. Par exemple :
d1 instanceof Object
Cela évaluera toujours à true.
Java
- Comprendre le mot-clé final en Java : variables, méthodes et classes
- Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
- Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
- Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
- Maîtriser les génériques Java : Construire du code réutilisable et type-safe
- Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression
- Java 9 : Opérateur diamant (<>) avec classes anonymes