Execução do código retornando o hash.
Execução do código retornando o hash.
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!