logo

instancia de Java de

  1. instancia java de
  2. Ejemplo de operador de instancia
  3. Aplicar el operador instancia de con una variable que tiene valor nulo
  4. Downcasting con operador de instancia
  5. Downcasting sin instancia de operador

El operador de instancia de java se utiliza para probar si el objeto es una instancia del tipo especificado (clase, subclase o interfaz).

La instancia de Java también se conoce como tipo. operador de comparación porque compara la instancia con el tipo. Devuelve verdadero o falso. Si aplicamos el operador instancia de con cualquier variable que tenga valor nulo, devuelve falso.

cadena a int en java

Ejemplo simple de instancia de Java

Veamos el ejemplo simple de operador de instancia donde prueba la clase actual.

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

Un objeto de tipo subclase también es un tipo de clase principal. Por ejemplo, si Perro extiende Animal, entonces el objeto de Perro puede ser referido por la clase Perro o Animal.

Otro ejemplo de operador instancia de 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 } } 
Pruébalo ahora
 Output:true 

instancia de java con una variable que tiene valor nulo

Si aplicamos el operador instancia de con una variable que tiene un valor nulo, devuelve falso. Veamos el ejemplo que se da a continuación donde aplicamos el operador instancia de con la variable que tiene valor nulo.

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

Downcasting con el operador instancia de Java

Cuando el tipo de subclase se refiere al objeto de la clase principal, se conoce como abatimiento. Si lo realizamos directamente, el compilador da un error de compilación. Si lo realiza encasillando, ClassCastException se lanza en tiempo de ejecución. Pero si utilizamos el operador instancia de, es posible abatir.

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

Si realizamos downcasting mediante encasillamiento, ClassCastException se lanza en tiempo de ejecución.

java matemáticas aleatorias aleatorias
 Dog d=(Dog)new Animal(); //Compiles successfully but ClassCastException is thrown at runtime 

Posibilidad de abatir con instancia de

Veamos el ejemplo, donde el operador de instancia de downcasting es posible.

 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); } } 
Pruébalo ahora
 Output:ok downcasting performed 

Downcasting sin el uso de Java instancia de

El downcasting también se puede realizar sin el uso del operador instancia de como se muestra en el siguiente ejemplo:

 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); } } 
Pruébalo ahora
 Output:ok downcasting performed 

Echemos un vistazo más de cerca a esto: el objeto real al que hace referencia a es un objeto de la clase Perro. Entonces, si lo abatimos, está bien. Pero ¿qué pasará si escribimos:

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

Comprender el uso real de instancia de Java

Veamos el uso real de la palabra clave instancia de con el ejemplo que se proporciona a continuación.

 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); } } 
Pruébalo ahora
 Output: b method