logo

Java forekomst af

  1. java forekomst af
  2. Eksempel på instans af operatør
  3. Anvendelse af instansen af ​​operatoren med en variabel har null-værdi
  4. Downcasting med instans af operatør
  5. Nedkastning uden forekomst af operatør

Det java instans af operatør bruges til at teste, om objektet er en instans af den angivne type (klasse eller underklasse eller interface).

Forekomsten af ​​i java er også kendt som type sammenligningsoperatør fordi den sammenligner instansen med type. Det returnerer enten sandt eller falsk. Hvis vi anvender instanceof-operatoren med en variabel, der har en nulværdi, returnerer den falsk.

Simpelt eksempel på java instanceof

Lad os se det simple eksempel på instansoperator, hvor den tester den aktuelle klasse.

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

Et objekt af underklassetype er også en type overordnet klasse. For eksempel, hvis Dog udvider Animal, kan hundens objekt henvises til enten Hund- eller Animal-klassen.

Et andet eksempel på java-instans af operatør

 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 } } 
Test det nu
 Output:true 

instanceof i java med en variabel, der har null-værdi

Hvis vi anvender instanceof-operator med en variabel, der har en nulværdi, returnerer den falsk. Lad os se eksemplet nedenfor, hvor vi anvender instanceof-operator med variablen, der har en nulværdi.

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

Downcasting med java-instans af operatør

Når underklassetype refererer til objektet i forældreklassen, er det kendt som downcasting. Hvis vi udfører det direkte, giver compiler kompileringsfejl. Hvis du udfører det ved typecasting, kastes ClassCastException under kørsel. Men hvis vi bruger instanceof operator, er downcasting muligt.

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

Hvis vi udfører downcasting ved typecasting, kastes ClassCastException under kørsel.

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

Mulighed for downcasting med instanceof

Lad os se eksemplet, hvor downcasting er mulig ved instanceof operator.

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

Downcasting uden brug af java instanceof

Downcasting kan også udføres uden brug af instanceof operator som vist i følgende eksempel:

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

Lad os se nærmere på dette, faktiske objekt, der henvises til af a, er et objekt af hundeklassen. Så hvis vi nedlægger det, er det fint. Men hvad sker der, hvis vi skriver:

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

Forståelse af reel brug af instanceof i java

Lad os se den reelle brug af instanceof søgeord ved eksemplet nedenfor.

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