47. Чем a.getClass().equals(A.class) отличается от a instanceOf A.class
UNKNOWNgetClass() получает только класс, а оператор instanceof проверяет, является ли объект кземпляром класса или его потомком.
Оператор instanceof сравнивает объект и указанный тип. Его можно использовать для проверки, является ли данный объект экземпляром некоторого класса, либо экземпляром его дочернего класса, либо экземпляром класса, который реализует указанный интерфейс.
this.getClass() == that.getClass() проверяет два класса на идентичность, поэтому для корректной реализации контракта метода equals() необходимо использовать точное сравнение с помощью метода getClass().
Для equals всегда нужно сравнивать типы объектов через getClass. instanceof не соблюдает правило симметрии в наследниках.
my.equals(child) = true //
child.equals(my) = false // должно быть тру
Предыдущий вопрос: 46. Есть класс Point{int x, y;}. Почему хэш-код в виде 31 * x + y предпочтительнее чем x + y?
Следующий вопрос: 1. Что такое исключения?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне