1
resposta

[Projeto] Faça como eu fiz: utilizando foreach e instanceof

package br.com.alura.screenmatch.principal;

import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
import br.com.alura.screenmatch.modelos.Titulo;

import java.util.ArrayList;

public class PrincipalComListas {
    public static void main(String[] args) {

        Filme meuFilme = new Filme("O poderoso chefão", 1970);
        meuFilme.avaliacao(9);
        Filme outroFilme = new Filme("Avatar", 2023);
        outroFilme.avaliacao(6);
        var filmeDoPaulo = new Filme("Dogville", 2003);
        filmeDoPaulo.avaliacao(10);
        Serie lost = new Serie("Lost", 2000);

        ArrayList<Titulo> lista = new ArrayList<>();
        lista.add(filmeDoPaulo);
        lista.add(meuFilme);
        lista.add(outroFilme);
        lista.add(lost);
        for (Titulo item: lista) {
            System.out.println(item.getNome());
            if (item instanceof  Filme filme && filme.getClassificacao() > 2) {
                System.out.println("Classificação: " + filme.getClassificacao());
            }
        }
    }
}
1 resposta

Oi, Vanderlei! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu uso do **instanceof** com pattern matching no for ficou muito bem aplicado. A verificação condicional da classificação dos filmes deixou o código claro e objetivo, ótimo uso do recurso da linguagem.

Uma dica interessante para o futuro é usar o método **toString** em suas classes para customizar a forma como os objetos são exibidos ao imprimir. Assim, em vez de mostrar só o nome com getNome(), você pode incluir mais detalhes, como ano de lançamento e classificação.

Veja este exemplo:


@Override
public String toString() {
    return "Filme: " + getNome() + " (" + getAnoDeLancamento() + ")";
}

Esse método faz com que, ao usar System.out.println(objeto), a saída mostre algo mais informativo automaticamente.

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