Instanceof en Java: descubre cómo funciona el operador
El operador Java instanceof se puede usar para verificar la coincidencia de un objeto y una clase y, de esta forma, evitar los mensajes de error. El operador proporciona esta información en forma de sentencia booleana, es decir, “verdadero” o “falso”. Se puede utilizar la comprobación para evitar mensajes de error.
¿Qué es instanceof en Java?
No todas las variables en Java son lo suficientemente específicas como para que se pueda discernir su naturaleza de inmediato. Sobre todo, cuando se utiliza el lenguaje de programación para crear proyectos extensos con un gran número de variables, los datos de entrada, por ejemplo, pueden hacer que una variable al final se muestre como uno de varios objetos. Por esta razón, Java pone a disposición el operador instanceof, el cual permite mostrar si la instancia de una variable de referencia corresponde realmente a una clase, subclase o interfaz. Si es así, el operador devuelve el valor booleano “true”. Si no coincide, la salida es “false” (falso).
Es fundamental, sobre todo antes de convertir un objeto desconocido, realizar una verificación con instanceof de Java. De este modo, se garantiza que el objeto pertenece a la clase asumida. Si se omite esta verificación, puede producirse un ClassCastException, un error que resulta de convertir un objeto en una clase diferente. El mensaje de error puede generar confusión y complicaciones, especialmente en código más largo, por lo que es aconsejable realizar una verificación preventiva.
Funcionalidad y sintaxis
Al ejecutar el operador instanceof en Java, se compara una variable de referencia con una clase específica también indicada. El operador se limita a determinar si hay coincidencia o no, sin incluir más información sobre la naturaleza del objeto o de la clase. La sintaxis es muy sencilla. Muestra el siguiente aspecto:
Si (objeto)
es una instancia de (clase)
, se muestra “true”. Si no lo es, se muestra “false”.
Ejemplo simple de un operador instanceof en Java
La forma más sencilla de mostrar el funcionamiento de instanceof en Java es con un breve ejemplo. Para ello, primero se crea una clase llamada “Animal”.
En el siguiente paso, se amplía esta clase con una subclase llamada “Gato”.
Ahora puedes utilizar instanceof de Java para comprobar si una instancia de “Gato” pertenece a la clase “Animal”. Para ello, se utilizan las siguientes líneas, que se imprimen con el comando de Java System.out.println
:
En la consola, se debería leer lo siguiente:
Múltiples niveles y la clase objeto
Este principio también funciona con la clase Main y otras subclases. Se muestra en un ejemplo con varios niveles, en el que el operador instanceof de Java se amplía con if-else
. El texto tras las dos barras son comentarios Java que sirven únicamente para aclarar cada paso del proceso, pero que no tienen impacto en el resultado final del código.
En el ejemplo, se quiere saber si “Gato1” es una instancia de la clase “Gato” y de la superclase “Animal”. En las dos consultas se obtiene “true”. Como Object o la clase “java.lang.Object” está en la parte superior de la jerarquía, “Gatot1” también es una instancia de Object. Por tanto, el operador instanceof de Java siempre mostrará “true” si se utiliza con la clase Object. El resultado final del código se muestra:
Salida para un valor nulo
Si una variable tiene el valor 0, es decir, no contiene ningún objeto, el operador instanceof de Java muestra “false” automáticamente. En el siguiente ejemplo, lo puedes comprobar:
El resultado final del código se muestra:
Las superclases no son una instancia de una clase inferior
Mientras que en la jerarquía los objetos de las subclases también pertenecen a las clases superiores, este principio no funciona a la inversa. Se puede ver en el siguiente ejemplo:
La salida en este caso es
Mensaje de error por falta de relación
Si no hay relación entre el objeto y la clase, se muestra un mensaje de error. Para mostrarlo, se crea a continuación una clase llamada “Perro”, que pertenece a la superclase “Animal”, pero no tiene relación con “Gato”.
En este caso, recibimos un mensaje de error que indica que no hay conexión entre las clases “Gato”“ y “Perro”. Este mensaje tiene el siguiente aspecto:
En la Digital Guide encontrarás otros tutoriales y artículos sobre Java. Por ejemplo, se incluye un artículo sobre Java y JavaScript o sobre Java y Python. Si quieres saber más sobre operadores Bitwise de Java, tenemos la guía perfecta para ti.