La herencia se encuentra en todos lados en Java, en este post se hablará del operador instanceof, este es utilizado sobre referencias y determinará si una referencia apunta a un objeto es de un tipo en especial. Cuando se habla de herencia se habla del operador ES-UN, instanceof será la forma en la que seremos capaces de hacer esta evaluación en java.
Ejemplo
/** * @author maagapi * */ public class InstanceOfExample { public static void main(String[] args) { String cad = "Hello world !"; System.out.println(cad instanceof String); } }
Output:
true
Como se puede observar la salida es true, lo cual significa que la referencia cad apunta a un objeto de la clase String, con esto se puede decir que la variable cad ES-UN String.
Operador instanceof en la herencia
El operador instanceof se puede utilizar también para determinar si la referencia es de un super tipo, recordemos que este operador realizará la validación ES-UN
Ejemplo
/** * @author maagapi * */ public class InstanceOfExample { public static void main(String[] args) { String cad = "Hello world !"; System.out.println(cad instanceof String); System.out.println(cad instanceof Object); } }
Salida:
true true
Si observamos la salida podremos ver que esta imprime verdadero para ambos casos, lo cual significa que la referencia cad ES-UN String pero también cad ES-UN Object.
Reglas importantes
A continuación se listan algunas de las reglas más importantes al utilizar el operador:
- instanceof es una palabra reservada, por tanto no se debe utilizar como identificador en las aplicaciones.
- solo es posible utilizarlo sobre referencias y clases que pertenecen al mismo árbol de herencia, de tal modo que si se trata de hacer lo siguiente resultará en un error de compilación:
/** * @author maagapi * */ public class InstanceOfExample { public static void main(String[] args) { String cad = "Hello world"; System.out.println(cad instanceof Integer); } }
Salida:
Incompatible conditional operand types String and Integer
- Por esto solo es posible utilizar el operador con su clase correspondiente o con alguno de sus super tipos.
- Si se aplica el operador instanceof a una referencia apuntando a null, sin importar la clase con la que se valide el resultado siempre será false.
Los libros recomendados para este tema son:
- Oracle Certified Professional Java SE 8 Programmer II: Exam 1Z0-809
- OCA/OCP Java SE 8 Programmer Certification Kit: Exam 1Z0-808 and Exam 1Z0-809
Autor: Alejandro Agapito Bautista
Twitter: @raidentrance
Contacto:raidentrance@gmail.com