Pourquoi avons-nous besoin de surcharger la méthode equals() en Java?

J'ai une certaine confusion à propos de la raison pour laquelle nous remplacer la .equals méthode.

Par exemple:

Test test1 = new Test(3);
Test test2 = new Test(3);

//The if comparison does the same thing that the overridden `.equals()` method does.
if(test1.equals(test2)){
    System.out.println("test1 and test2 are true in .equals()");
}

//Override .equals method.
public boolean equals(Object object) {
    if(object instanceof Test && ((Test)object).getValue() == this.t) {
        return true;
    } else {
        return false;
    }
}

Je ne comprends pas pourquoi nous devons remplacer la .equals() méthode.

test1.equals(test2) ne fonctionne pas comme prévu si vous n'avez pas le remplacer.
Remarque: vous devez remplacer hashCode() si vous écrasez equals()

OriginalL'auteur nakul | 2013-03-02