Зачем при переопределении equals после сравнения классов делать приведение типов сравниваемых объектов?
В процессе изучения Java столкнулся с темой переопределения метода equals. Во всех гайдах на эту тему встречается такая последовательность:
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
Person guest = (Person) obj;
Я понимаю смысл сравнения классов при сравнении объектов, но зачем дальше, зная что классы объектов и так идентичны, приводить один объект к типу другого?
Ответы (1 шт):
Автор решения: Fixpinger
→ Ссылка
- При переопределении метода мы используем тот же тип аргументов, что и в оригинальном методе (Object), иначе это будет перегрузка (@Overload)
- Так вот. переопределяя equals(), мы используем тип Object, то есть передаваемый аргумент принимает этот тип. Но переданный объект все равно будет относится к классу, которому принадлежал. Тоесть есть смысл сравнить классы.
- Только если не сделать приведение типов, то поля объектов, необходимых нам для сравнения, будут недоступны.
- То есть ты делаешь низходящее приведение типов от object к необходимому типу. Попробуй сам все это в среде разработки и поймешь.