Метод equals() Java

Метод equals() JavaМетод equals() класса Object проверяет, эквивалентны ли два объекта. Поскольку метод equals() реализован в классе Object, он определяет лишь, ссылаются ли переменные на один и тот же объект. В качестве проверки по умолчанию эти действия вполне оправданы: всякий объект эквивалентен самому себе.

Для некоторых классов большего и не требуется. Например, вряд ли кому-то потребуется анализировать два объекта PrintStream и выяснить, отличаются ли они друг от друга. Однако в ряде случаев эквивалентными должны считаться объекты одного типа, имеющие одинаковые состояния.Рассмотрим в качестве примера обьекты, описывающие сотрудников. Очевидно, что они одинаковы, если совпадают имена, размеры заработной платы и даты приема на работу. Строго говоря, в реальных системах учета информации о сотрудниках более оправдано сравнение идентификационных номеров. Здесь же мы лишь демонстрируем принципы реализации метода equals().

Метод getClass() возвращает класс объекта. Чтобы обьекты были эквивалентны, они как минимум должны быть обьектами одного и того же класса. Определяя метод equals() для подкласса, надо сначала вызывать тот же метод суперкласса. Если проверка даст отрицательный результат, обьекты не могут быть идентичными. Если же поля суперкласса совпадают, можно приступать к сравнению полей подкласса.