- java forekomst av
- Eksempel på forekomst av operatør
- Ved å bruke instansen av operatoren med en variabel har null-verdien
- Nedkasting med instans av operatør
- 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