logo

Java-instans av

  1. java instans av
  2. Exempel på instans av operatör
  3. Genom att tillämpa instansen av operatorn med en variabel har null-värdet
  4. Nedsändning med instans av operatör
  5. Nedsändning utan instans av operatör

De java-instans av operatör används för att testa om objektet är en instans av den angivna typen (klass eller underklass eller gränssnitt).

Instanceof i java är också känd som typ jämförelseoperatör eftersom den jämför instansen med typ. Det returnerar antingen sant eller falskt. Om vi ​​tillämpar operatorn instanceof med någon variabel som har ett nollvärde, returnerar den false.

Enkelt exempel på java instansof

Låt oss se det enkla exemplet på instansoperator där den testar den aktuella klassen.

 class Simple1{ public static void main(String args[]){ Simple1 s=new Simple1(); System.out.println(s instanceof Simple1);//true } } 
Testa det nu
 Output:true 

Ett objekt av underklasstyp är också en typ av överordnad klass. Till exempel, om Dog utökar Animal kan hundens objekt hänvisas till antingen hund- eller djurklass.

Ett annat exempel på java-instans av 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 } } 
Testa det nu
 Output:true 

instansof i java med en variabel som har ett nollvärde

Om vi ​​använder instanceof-operatorn med en variabel som har ett nollvärde, returnerar den false. Låt oss se exemplet nedan där vi tillämpar instansof-operatorn med variabeln som har ett nollvärde.

 class Dog2{ public static void main(String args[]){ Dog2 d=null; System.out.println(d instanceof Dog2);//false } } 
Testa det nu
 Output:false 

Nedsändning med java-instans av operatör

När underklasstyp hänvisar till objektet i överordnad klass kallas det nedkastning. Om vi ​​utför det direkt, ger kompilatorn kompileringsfel. Om du utför det genom att typcasta, kastas ClassCastException under körning. Men om vi använder instanceof operator är nedsändning möjlig.

array sorterad i java
 Dog d=new Animal();//Compilation error 

Om vi ​​utför nedcastning genom typcasting kastas ClassCastException under körning.

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

Möjlighet till downcasting med instanceof

Låt oss se exemplet där nedsändning är möjlig med instans av operatör.

 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); } } 
Testa det nu
 Output:ok downcasting performed 

Nedsändning utan användning av java instansof

Nedsändning kan också utföras utan användning av instanceof operator som visas i följande exempel:

 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); } } 
Testa det nu
 Output:ok downcasting performed 

Låt oss titta närmare på detta, faktiska objekt som hänvisas till av a, är ett objekt av hundklassen. Så om vi slår ner det är det bra. Men vad händer om vi skriver:

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

Förstå verklig användning av instanceof i java

Låt oss se den verkliga användningen av instanceof nyckelord genom exemplet nedan.

 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); } } 
Testa det nu
 Output: b method