Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

instanciando um elemento

Filme filme = (Filme) item;

No código acima, minha dúvida é por quê não foi usado o 'new' uma vez que ainda não tínhamos o elemento ' filme ' na memória? Na minha cabeça o certo seria o código abaixo:

Filme filme = new Filme();
filme = (Filme) item;
1 resposta
solução!

Oi, André! Tudo bem?

No código apresentado, a linha Filme filme = (Filme) item; está fazendo um casting do objeto item para o tipo Filme. O casting é usado quando temos um objeto de um tipo mais genérico e queremos tratá-lo como um tipo mais específico.

No caso, o objeto item está sendo tratado como um Filme. Não é necessário usar o new novamente porque o objeto já existe na memória, ele foi criado anteriormente. O casting apenas altera a forma como nos referenciamos a esse objeto.

Vamos supor que temos uma lista de objetos do tipo Titulo, que pode conter tanto filmes quanto séries. Ao percorrer essa lista, podemos verificar se cada objeto é uma instância de Filme usando o operador instanceof. Se for um filme, podemos fazer o casting e tratá-lo como um objeto do tipo Filme.

Por exemplo, no trecho de código que você mostrou:

for (Titulo item: lista){
    System.out.println(item.getNome());
    if (item instanceof Filme){
        Filme filme = (Filme) item;
        System.out.println("Classificação: " + filme.getClassificacao());
    }
}

Estamos percorrendo a lista de títulos e, se o item atual for uma instância de Filme, fazemos o casting para o tipo Filme e podemos acessar os métodos e atributos específicos desse tipo, como a classificação.

Lembre-se que é importante verificar se o objeto é realmente uma instância do tipo desejado antes de fazer o casting, para evitar erros durante a execução do programa.

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓