1
resposta

Não entendi muito bem o override de equals

No vídeo, o professor comenta que irá sobre escrever o método "Equals" na qual o método "Contains" utiliza, porém, eu abri o método "Contains" e não achei ele utilizando o "Equals", segue abaixo:

public boolean contains(Object o) { return indexOf(o) >= 0; }

Fiquei na dúvida de como esse override está sendo utilizado. 1 - A sobre escrita está sendo feita diretamente na classe Object ? Se sim, como ele está sendo relacionado com o método "Contains", pois esse método não está utilizando equals, apenas retornando return indexOf(o) >= 0;

1 resposta

Olá, Daniel! Sobrescrevemos o método "equals" pra dar mais significado aos objetos que instanciamos. Quando o usamos por padrão a saída que teremos é o seu Full Qualified Name (um nome usado pela JVM). Nome este parecido com isso: br.com.bytebank.banco.modelo.ContaCorrente@15db9742. Logo temos o seguinte: antes do nome da classe "ContaCorrente" temos os caminhos entre os pacotes na qual nossa classe está localizada; em seguida temos o nome da classe e depois um @ seguido pelo endereço da memória. Quando sobrescrevemos o "equals", esta informação não muito útil é substituída pelo que desejamos e logo não precisamos nos importar com essa saída horrorosa aí.

Nota: toda vez que concatenamos um objeto o método equals é chamado para mostrar suas informações. Por isto conseguimos printar nossos objetos :).