Boa tarde e bom carnaval a todos, apesar de aqui na Bahia a folia está pegando “fogo”, estou aqui nos meus estudos… rs
Pessoas, seguinte, dei uma lida nos posts referentes a equals and hashcode, mas me restam algumas dúvidas…
Vamos lá, estando no eclipse solicitei uma sobrescrita automática dos dois métodos, usando como parâmetro o atributo número, ele me gerou:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + numero;
return result;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final Conta other = (Conta) obj;
if (numero != other.numero)
return false;
return true;
}
1ª) O método equals() chama implicitamente o método hashcode, correto?
2ª) final int prime = 31; e int result = 1; Esse valor 31 e 1, são aleatórios? Se não, são baseados em que?
3ª) Como provocar uma inconsistência na comparação para que o equals() erre e o hashcode() salve a comparação? Essa é a intenção, correto?
4ª) Nesse exemplo acima mesmo removendo hashcode(), o equals() funciona sem problemas, tem algo errado?
Obrigado a todos…
Daniel Reis