47. Чем a.getClass().equals(A.class) отличается от a instanceOf A.class

47. Чем a.getClass().equals(A.class) отличается от a instanceOf A.class

UNKNOWN
getClass() получает только класс, а оператор 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. Что такое исключения?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page