Bom dia pessoal,
Eu tenho uma classe Cao e sobreescrevo o equals e o hashcode:
public class Cao{
private String nome;
private String raca;
private int idade;
public boolean equals(Object objCao) {
Cao cao = (Cao) objCao;
return getIdade() == cao.getIdade();
}
public int hashCode() {
return getIdade()*2;
}
Quando eu testo, os caes com idade iguais são considerados objetos iguais e possuem um mesmo hashcode.
O resultado sai assim:
6
10
20
10
Os hashcodes 10 correspondem a caes com idades iguais.
Agora, quando é que o hashcode é gerado?
Em que momento o java sabe que o hashcode de caes com idades iguais deve ser o mesmo?
O que eu não estou entendendo é:
Como ele sabe que deve dar o hash igual à caes com idades iguais. Qual a ordem de execução dos métodos...
Obrigado