1
resposta

.

import java.util.ArrayList;
import java.util.List;

class PrincipalComListas {
    public static void main(String[] args) {
        List<Object> titulos = new ArrayList<>();
        
        titulos.add(new Filme("O Poderoso Chefão", 1972));
        titulos.add("Cidade de Deus"); // String, não é Filme
        titulos.add(new Filme("Interestelar", 2014));
        titulos.add(42); // Integer, não é Filme
        titulos.add(new Filme("Matrix", 1999));
        
        System.out.println("=== Lista Completa ===");
        System.out.println(titulos);
        
        System.out.println("\n=== Filmes na Lista ===");
        // Percorrendo a lista com foreach
        for (Object item : titulos) {
            // Verificando se o item é uma instância de Filme
            if (item instanceof Filme) {
                // Fazendo o casting seguro para Filme
                Filme filme = (Filme) item;
                System.out.println(filme.getTitulo() + " (" + filme.getAno() + ")");
            }
        }
    }
}

class Filme {
    private String titulo;
    private int ano;
    
    public Filme(String titulo, int ano) {
        this.titulo = titulo;
        this.ano = ano;
    }
    
    public String getTitulo() {
        return titulo;
    }
    
    public int getAno() {
        return ano;
    }
    
    @Override
    public String toString() {
        return titulo + " (" + ano + ")";
    }
}
1 resposta

Oi, Eleazar! Como vai?

Ficou muito claro o uso do instanceof para filtrar os objetos da lista e garantir que apenas os elementos do tipo Filme sejam manipulados com segurança. A lógica está bem estruturada e ajuda a entender como lidar com coleções heterogêneas em Java.

Uma dica interessante para o futuro é o uso de var (a partir do Java 10) para deixar o código mais limpo, principalmente em loops. Veja como poderia ficar:


for (var item : titulos) {
    if (item instanceof Filme) {
        var filme = (Filme) item;
        System.out.println(filme.getTitulo() + " (" + filme.getAno() + ")");
    }
}

Neste exemplo, usamos var para simplificar a declaração das variáveis, mantendo a clareza do código. O compilador ainda infere corretamente os tipos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!