2
respostas

Main retorna apenas o hash dos filmes

Execução do código retornando o hash.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Quando você tentar imprimir uma classe diretamente, por baixo dos panos o Java faz um chamado ao método toString, se ele não estiver implementado por você, ele retorna o ClassName@hashcode, pois essa é a sua implementação padrão.

Para conseguir imprimir tudo o que você quer de uma vez ao chamar o objeto basta você configurar o método toString ao seu gosto.

Na classe Filme você pode configurar esse método, aqui vai um exemplo:

@Override
public String toString(){

    return  "[Nome: " + this.nome + " ], [Ano de lançamento: " + this.anoDeLancamento + "]";
}

A classe Filme é um filho de Titulo? Se sim, você pode implementar esse toString em Titulo, assim todas as classes filhas de Titulo terão a implementação da sua classe pai, e mesmo herdando, você também pode sobrescrever e fazer a classe filha ter um toString diferente da sua classe pai.

Esse método é uma herança da classe Object, sua implementação padrão retorna o ClassName@hashcode

Olá, Guido! Tudo bem com você?

Analisando o print que você compartilhou consegui identificar o porquê de seu terminal está mostrando apenas os hashes dos filmes, você esqueceu de chamar o método getNome(). Logo, ao printar somente o item, será retornado apenas o hash.

for (Titulo item: lista ) System.out.println(item.getNome());

Ao realizar a chamada desse método, quando for realizado o print no terminal, lhe será retornado o nome de cada filme inserido na sua lista.

Espero ter ajudado e caso tenha problemas ou dúvidas, estarei à disposição.

Grande abraço e bons estudos!

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