В equals() требуется проверять, что аргумент equals(Object that) такого же типа что и сам объект. В чем разница между this.getClass() == that.getClass() и that instanceof MyClass?
Оператор
Оператор
instanceof
сравнивает объект и указанный тип. Его можно использовать для проверки является ли данный объект экземпляром некоторого класса, либо экземпляром его дочернего класса, либо экземпляром класса, который реализует указанный интерфейс.this.getClass() == that.getClass()
проверяет два класса на идентичность, поэтому для корректной реализации контракта метода equals()
необходимо использовать точное сравнение с помощью метода getClass()
.