logo

Java-forekomst av

  1. java forekomst av
  2. Eksempel på forekomst av operatør
  3. Ved å bruke instansen av operatoren med en variabel har null-verdien
  4. Nedkasting med instans av operatør
  5. Nedkasting uten forekomst av operatør

De java-forekomst av operatør brukes til å teste om objektet er en instans av den angitte typen (klasse eller underklasse eller grensesnitt).

Forekomsten av i java er også kjent som type sammenligningsoperatør fordi den sammenligner forekomsten med type. Det returnerer enten sant eller usant. Hvis vi bruker instanceof-operatoren med en variabel som har nullverdi, returnerer den usann.

Enkelt eksempel på java instanceof

La oss se det enkle eksemplet på instansoperatør der den tester gjeldende klasse.

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

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

Et annet eksempel på java-forekomst av 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 nå
 Output:true 

instanceof i java med en variabel som har nullverdi

Hvis vi bruker instanceof-operator med en variabel som har nullverdi, returnerer den usann. La oss se eksemplet nedenfor der vi bruker instanceof operator med variabelen som har nullverdi.

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

Nedkasting med java-instans av operatør

Når underklassetype refererer til objektet til overordnet klasse, er det kjent som nedkasting. Hvis vi utfører det direkte, gir kompilatoren kompileringsfeil. Hvis du utfører det ved typecasting, blir ClassCastException kastet under kjøring. Men hvis vi bruker instanceof operator, er nedkasting mulig.

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

Hvis vi utfører nedkasting ved typecasting, blir ClassCastException kastet under kjøring.

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

Mulighet for nedkasting med instanceof

La oss se eksemplet, der nedkasting er mulig ved 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); } } 
Test det nå
 Output:ok downcasting performed 

Nedkasting uten bruk av java instanceof

Nedkasting kan også utføres uten bruk av 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 nå
 Output:ok downcasting performed 

La oss se nærmere på dette, faktiske objektet som er referert til av a, er et objekt av hundeklassen. Så hvis vi nedslår det, er det greit. Men hva vil skje hvis vi skriver:

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

Forstå reell bruk av instanceof i java

La oss se den virkelige bruken av forekomst av nøkkelord ved eksemplet gitt 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 nå
 Output: b method