Os métodos “equals” e “hashCode” nada mais são que a forma pela qual pode-se verificar se um objeto é “o mesmo que” outro.
A definição do método “equals” deve seguir uma implementação adequada que contemple as seguintes operações:
Reflexiva
x.equals(x)
Simétrica
x.equals(y) == y.equals(x)
Transitiva
( x.equals(y) && y.equals(z) ) == x.equals(z)
Consistente
Se x.equals(y) é verdadeiro em algum momento da vida do objeto, então será sempre verdadeiro, desde que x e y não se alterem.
A compreensão plena desses conceitos é útil e surpreendentemente complexa. Um equívoco na implementação de tais métodos podem gerar resultados inesperados durante a execução do seu programa.
Copyright © 2016 AIEC.