principal/PrincipalConListas.java
import modelos.Pelicula;
import modelos.Serie;
import modelos.Titulo; // Importamos la clase base
import java.util.ArrayList;
public class PrincipalConListas {
public static void main(String[] args) {
// 1. Instanciación usando los constructores (nombre, fechaDeLanzamiento)
// Pelicula 1
Pelicula favorita = new Pelicula("El señor de los anillos", 2001);
favorita.evalua(10); // Asume que evalua() existe y afecta la Clasificacion
favorita.evalua(9);
// Pelicula 2
Pelicula otra = new Pelicula("John Wick", 2014);
otra.evalua(9);
otra.evalua(8);
// Serie
Serie serie = new Serie("La Casa de Papel", 2017);
// 2. Creación del ArrayList polimórfico
// La lista es de tipo Titulo, pero acepta Pelicula y Serie (Herencia)
ArrayList<Titulo> lista = new ArrayList<>();
lista.add(favorita);
lista.add(otra);
lista.add(serie);
System.out.println("--- Recorriendo la lista de Títulos ---");
// 3. Recorrido con Loop foreach y validación con instanceof
for (Titulo item : lista) {
// Imprime el nombre (método polimórfico de Titulo)
System.out.println("\nNombre: " + item.getNombre());
/*
* Uso de 'instanceof' con Pattern Matching (Java 16+):
* 1. Verifica si 'item' es una instancia de Pelicula.
* 2. Si es verdadero, realiza el casting y asigna el resultado
* a la nueva variable local 'pelicula' de forma implícita.
* 3. Luego, evalúa la condición adicional: pelicula.getClasificacion() > 2
*/
if (item instanceof Pelicula pelicula && pelicula.getClasificacion() > 2) {
System.out.println("Es una Película bien clasificada.");
System.out.println("Clasificación: " + pelicula.getClasificacion());
} else {
System.out.println("No es una película o su clasificación es baja/desconocida.");
}
}
}
}