Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] no entiendo el instanceof

Segun aqui hace el casteo? no entiendo bien

for(Titulo item : lista2) { System.out.println("Nombre: " + item.getNombre()); if (item instanceof Pelicula pelicula && pelicula.getClasificacion() > 2) { System.out.println("Clasificacion: " + pelicula.getClasificacion()); } }

1 respuesta

¡Hola Antonio!

Entiendo que estás un poco confundido con el uso de instanceof y cómo se relaciona con el "casting" en Java. Vamos a desglosarlo un poco.

El operador instanceof se utiliza para verificar si un objeto es una instancia de una clase específica. En tu ejemplo, estás usando instanceof para comprobar si el objeto item es una instancia de la clase Pelicula.

La parte interesante de tu código es esta línea:

if (item instanceof Pelicula pelicula && pelicula.getClasificacion() > 2) {

Aquí, instanceof está haciendo dos cosas al mismo tiempo gracias a una característica de Java llamada "pattern matching" (disponible a partir de Java 16). Primero, verifica si item es una instancia de Pelicula. Si lo es, automáticamente realiza un "casting" a Pelicula y lo asigna a la variable pelicula. Esto significa que dentro del bloque if, puedes usar pelicula como si fuera un objeto de tipo Pelicula sin necesidad de hacer un casting explícito.

Por ejemplo, en versiones anteriores de Java, tendrías que escribir algo como esto:

if (item instanceof Pelicula) {
    Pelicula pelicula = (Pelicula) item;
    if (pelicula.getClasificacion() > 2) {
        System.out.println("Clasificacion: " + pelicula.getClasificacion());
    }
}

El uso de instanceof con "pattern matching" simplifica el código y lo hace más legible. Espero que esto aclare tus dudas sobre cómo funciona instanceof en este contexto.

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!