logo

Instance Java de

  1. instance java de
  2. Exemple d'opérateur instanceof
  3. Application de l'opérateur instanceof avec une variable qui a une valeur nulle
  4. Downcasting avec l'opérateur instanceof
  5. Downcasting sans opérateur instanceof

Le opérateur instance d'instance java est utilisé pour tester si l'objet est une instance du type spécifié (classe ou sous-classe ou interface).

Actrice Rubina Dilaik

L'instanceof en Java est également connue sous le nom de type opérateur de comparaison car il compare l'instance avec le type. Il renvoie vrai ou faux. Si nous appliquons l’opérateur instanceof avec une variable ayant une valeur nulle, il renvoie false.

Exemple simple d'instance Java

Voyons l'exemple simple d'un opérateur d'instance où il teste la classe actuelle.

 class Simple1{ public static void main(String args[]){ Simple1 s=new Simple1(); System.out.println(s instanceof Simple1);//true } } 
Testez-le maintenant
 Output:true 

Un objet de type sous-classe est également un type de classe parent. Par exemple, si Dog étend Animal, alors l'objet de Dog peut être référencé par la classe Dog ou Animal.

Un autre exemple d'opérateur java instanceof

 class Animal{} class Dog1 extends Animal{//Dog inherits Animal public static void main(String args[]){ Dog1 d=new Dog1(); System.out.println(d instanceof Animal);//true } } 
Testez-le maintenant
 Output:true 

instanceof en Java avec une variable qui a une valeur nulle

Si nous appliquons l’opérateur instanceof avec une variable qui a une valeur nulle, il renvoie false. Voyons l'exemple ci-dessous où nous appliquons l'opérateur instanceof avec la variable qui a une valeur nulle.

 class Dog2{ public static void main(String args[]){ Dog2 d=null; System.out.println(d instanceof Dog2);//false } } 
Testez-le maintenant
 Output:false 

Downcasting avec l'opérateur java instanceof

Lorsque le type de sous-classe fait référence à l’objet de la classe Parent, on parle de downcasting. Si nous l'exécutons directement, le compilateur donne une erreur de compilation. Si vous l'effectuez par transtypage, ClassCastException est levée au moment de l'exécution. Mais si nous utilisons l’opérateur instanceof, le downcasting est possible.

mot-clé statique en Java
 Dog d=new Animal();//Compilation error 

Si nous effectuons un downcasting par transtypage, ClassCastException est levée au moment de l'exécution.

 Dog d=(Dog)new Animal(); //Compiles successfully but ClassCastException is thrown at runtime 

Possibilité de downcasting avec instanceof

Voyons l'exemple, où le downcasting est possible par l'opérateur instanceof.

liste vide java
 class Animal { } class Dog3 extends Animal { static void method(Animal a) { if(a instanceof Dog3){ Dog3 d=(Dog3)a;//downcasting System.out.println('ok downcasting performed'); } } public static void main (String [] args) { Animal a=new Dog3(); Dog3.method(a); } } 
Testez-le maintenant
 Output:ok downcasting performed 

Downcasting sans utiliser d'instance Java

Le downcasting peut également être effectué sans utiliser l'opérateur instanceof, comme indiqué dans l'exemple suivant :

 class Animal { } class Dog4 extends Animal { static void method(Animal a) { Dog4 d=(Dog4)a;//downcasting System.out.println('ok downcasting performed'); } public static void main (String [] args) { Animal a=new Dog4(); Dog4.method(a); } } 
Testez-le maintenant
 Output:ok downcasting performed 

Regardons cela de plus près, l'objet réel référencé par a est un objet de la classe Dog. Donc si nous le baissons, ce n'est pas grave. Mais que se passera-t-il si on écrit :

 Animal a=new Animal(); Dog.method(a); //Now ClassCastException but not in case of instanceof operator 

Comprendre l'utilisation réelle d'instanceof en Java

Voyons l'utilisation réelle du mot-clé instanceof par l'exemple donné ci-dessous.

 interface Printable{} class A implements Printable{ public void a(){System.out.println('a method');} } class B implements Printable{ public void b(){System.out.println('b method');} } class Call{ void invoke(Printable p){//upcasting if(p instanceof A){ A a=(A)p;//Downcasting a.a(); } if(p instanceof B){ B b=(B)p;//Downcasting b.b(); } } }//end of Call class class Test4{ public static void main(String args[]){ Printable p=new B(); Call c=new Call(); c.invoke(p); } } 
Testez-le maintenant
 Output: b method