- instancia java de
- Ejemplo de operador de instancia
- Aplicar el operador instancia de con una variable que tiene valor nulo
- Downcasting con operador de instancia
- 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