logo

Java-Instanz von

  1. Java-Instanz von
  2. Beispiel für einen Instanzoperator
  3. Anwenden des Instanzoperators mit einer Variablen, die einen Nullwert hat
  4. Downcasting mit dem Instanzoperator
  5. Downcasting ohne Instanz des Operators

Der Java-Instanz des Operators wird verwendet, um zu testen, ob das Objekt eine Instanz des angegebenen Typs (Klasse oder Unterklasse oder Schnittstelle) ist.

Die Instanz von in Java wird auch als Typ bezeichnet Vergleichsoperator weil es die Instanz mit dem Typ vergleicht. Es gibt entweder wahr oder falsch zurück. Wenn wir den Instanzoperator auf eine Variable anwenden, die einen Nullwert hat, gibt er „false“ zurück.

Einfaches Beispiel einer Java-Instanz von

Sehen wir uns das einfache Beispiel eines Instanzoperators an, bei dem die aktuelle Klasse getestet wird.

 class Simple1{ public static void main(String args[]){ Simple1 s=new Simple1(); System.out.println(s instanceof Simple1);//true } } 
Testen Sie es jetzt
 Output:true 

Ein Objekt vom Typ einer Unterklasse ist auch ein Typ einer übergeordneten Klasse. Wenn Dog beispielsweise Animal erweitert, kann das Objekt von Dog entweder von der Dog- oder der Animal-Klasse referenziert werden.

Ein weiteres Beispiel für einen Java-Instanceof-Operator

 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 } } 
Testen Sie es jetzt
 Output:true 

Instanz von in Java mit einer Variablen, die einen Nullwert hat

Wenn wir den Operator „instanceof“ auf eine Variable anwenden, die den Wert Null hat, wird „false“ zurückgegeben. Sehen wir uns das folgende Beispiel an, in dem wir den Operator „instanceof“ auf die Variable anwenden, die den Wert Null hat.

 class Dog2{ public static void main(String args[]){ Dog2 d=null; System.out.println(d instanceof Dog2);//false } } 
Testen Sie es jetzt
 Output:false 

Downcasting mit Java-Instanceof-Operator

Wenn sich der Unterklassentyp auf das Objekt der übergeordneten Klasse bezieht, wird dies als Downcasting bezeichnet. Wenn wir es direkt ausführen, gibt der Compiler einen Kompilierungsfehler aus. Wenn Sie dies durch Typumwandlung durchführen, wird zur Laufzeit eine ClassCastException ausgelöst. Wenn wir jedoch den Operator „instanceof“ verwenden, ist ein Downcasting möglich.

 Dog d=new Animal();//Compilation error 

Wenn wir ein Downcasting durch Typumwandlung durchführen, wird zur Laufzeit eine ClassCastException ausgelöst.

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

Möglichkeit des Downcastings mit Instanz von

Sehen wir uns das Beispiel an, in dem Downcasting durch den Instanzoperator möglich ist.

 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); } } 
Testen Sie es jetzt
 Output:ok downcasting performed 

Downcasting ohne Verwendung von Java-Instanzen

Downcasting kann auch ohne die Verwendung des Instanzoperators durchgeführt werden, wie im folgenden Beispiel dargestellt:

 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); } } 
Testen Sie es jetzt
 Output:ok downcasting performed 

Schauen wir uns das genauer an. Das tatsächliche Objekt, auf das a verweist, ist ein Objekt der Dog-Klasse. Wenn wir es also ablehnen, ist es in Ordnung. Aber was passiert, wenn wir schreiben:

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

Verstehen der tatsächlichen Verwendung von „instanceof“ in Java

Sehen wir uns die tatsächliche Verwendung des Schlüsselworts „instanceof“ anhand des folgenden Beispiels an.

 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); } } 
Testen Sie es jetzt
 Output: b method