1
resposta

[Dúvida] Identificacao de tipo de objetos

  for (Titulo item : listaDeTitulos) {

            if (item instanceof Filme filme) {
                System.out.println(item.getNome());
            }


        }
        
        saida 

Duvida referente a aula https://cursos.alura.com.br/course/java-listas-colecoes-dados/task/126229.

No código usado como exemplo na aula, caso o objeto seja do tipo Filme, o nome será impresso. Verificando a execução demonstrada na aula, o codigo acima imprimiu o nome dos filmes e das series. Como o nome da Serie é impresso se não temos um "else" no código para verificar & executar uma ação caso o objeto seja do tipo SERIE?

1 resposta

Olá! Entendo sua dúvida e é uma ótima pergunta.

Pelo que entendi, você está confuso sobre por que o nome da série está sendo impresso, mesmo que não haja uma verificação específica para o tipo "Série". Isso acontece porque a linha System.out.println(item.getNome()); está fora do bloco if, então será executada para todos os itens da lista, independentemente de serem do tipo "Filme" ou "Série".

Aqui está o código com um pouco mais de contexto:

for (Titulo item : listaDeTitulos) {
    System.out.println(item.getNome()); // Esta linha é executada para todos os itens

    if (item instanceof Filme filme) {
        // Este bloco é executado apenas para itens do tipo Filme
        System.out.println(filme.getClassificacao());
    }
}

Neste código, o nome de cada item na lista será impresso, não importa se é um Filme ou uma Série. A verificação if (item instanceof Filme filme) só é usada para determinar se o item é um Filme, para que possamos imprimir a classificação. Se o item for uma Série, essa verificação será falsa e a classificação não será impressa, mas o nome da Série ainda será impresso porque essa instrução está fora do bloco if.

Espero ter ajudado e bons estudos!