logo

Istanza Java di

  1. istanza Java di
  2. Esempio di operatore istanzaof
  3. Applicando l'operatore istanzaof con una variabile il valore è nullo
  4. Downcasting con operatore istanza
  5. Downcasting senza istanza dell'operatore

IL operatore di istanza Java viene utilizzato per verificare se l'oggetto è un'istanza del tipo specificato (classe, sottoclasse o interfaccia).

L'istanza di Java è anche conosciuta come tipo operatore di confronto perché confronta l'istanza con il tipo. Restituisce vero o falso. Se applichiamo l'operatore istanzaof con qualsiasi variabile che abbia valore null, restituisce false.

Semplice esempio di istanza Java

Vediamo il semplice esempio dell'operatore di istanza in cui testa la classe corrente.

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

Un oggetto di tipo sottoclasse è anche un tipo di classe genitore. Ad esempio, se Dog estende Animal, l'oggetto Dog può essere riferito alla classe Dog o Animal.

Un altro esempio di operatore di istanza Java

 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 } } 
Provalo adesso
 Output:true 

istanza di Java con una variabile che ha valore nullo

Se applichiamo l'operatore istanza di con una variabile che ha valore null, restituisce false. Vediamo l'esempio fornito di seguito in cui applichiamo l'operatore istanza di con la variabile che ha valore null.

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

Downcasting con l'operatore di istanza Java

Quando il tipo di sottoclasse si riferisce all'oggetto della classe genitore, è noto come downcasting. Se lo eseguiamo direttamente, il compilatore restituisce un errore di compilazione. Se lo esegui tramite typecasting, ClassCastException viene generata in fase di runtime. Ma se usiamo l'operatore istanza dell'operatore, è possibile il downcasting.

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

Se eseguiamo il downcasting tramite typecasting, ClassCastException viene lanciata in fase di runtime.

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

Possibilità di downcasting con istanza di

Vediamo l'esempio in cui il downcasting è possibile tramite l'operatore istanzaof.

 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); } } 
Provalo adesso
 Output:ok downcasting performed 

Downcasting senza l'uso di Java exampleof

Il downcasting può essere eseguito anche senza l'utilizzo dell'operatore istanzaof, come mostrato nell'esempio seguente:

 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); } } 
Provalo adesso
 Output:ok downcasting performed 

Diamo un'occhiata più da vicino a questo oggetto reale a cui fa riferimento a, è un oggetto della classe Dog. Quindi se lo abbassiamo, va bene. Ma cosa accadrà se scriviamo:

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

Comprensione dell'uso reale di exampleof in Java

Vediamo l'uso reale della parola chiave exampleof con l'esempio fornito di seguito.

 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); } } 
Provalo adesso
 Output: b method