Как известно, метод equals() определен в классе java.lang.Object. Его реализация в данном классе, это простое сравнение ссылок, и если ссылки разные, то метод возвращает false. Если Вы хотите переопределить данный метод, не стоит забывать о контракте с методом hashCode(). Согласно данному контракту, если equals() возвращает true, то значение hashCode() для этих объектов будет одинаково, но выполнение обратного необязательно. Есть еще один контракт, о котором стоит помнить при написании своего собственного метода equals() :