Подскажите пожалуйста: для сравнения объектов используется переопределение метода equals от класса Object и апкаст:
public class Man {
private int dnaCode; // переменная класса
public Man(int dnaCode) { // конструктор
this.dnaCode=dnaCode;
}
@Override
public boolean equals(Man man) { // метод equals для сравнения
Man man = (Man) obj; // приведение параметра к типу класса
return dnaCode == man.dnaCode; // сравнение объектов по полю dnaCode
}
}
При этом надо учитывать все возможные ситуации, и ставить на них проверку. А что мы выигрываем от обращения к классу
Object? Почему бы не прописать все эти проверки в самом классе и для этого не потребуется делать перегрузку и апкаст объекта:
public class Man {
private int dnaCode;
public Man(int dnaCode) {
this.dnaCode=dnaCode;
}
public boolean equals(Man man) { // пишем метод в своем класса без обращения к родителю. Получается вроде проще...
return dnaCode == man.dnaCode;
}
}
Wise Rabbit
12 уровень
Зачем переопределять метод equals для объектов, если можно не переопределять?
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAExpert
15 января 2023, 15:01
Переопределение методов equals() и hashCode() в Java
Обратите внимание на пункт 1 (Распространенные ошибки при переопределении equals в Java)
0
Wise Rabbit
15 января 2023, 15:14
Спасибо)) не до конца, но примерно понял.)
0
Wise Rabbit
15 января 2023, 15:16
А как вы эти статьи так быстро тут находите?)) Тут на сайте есть какой-то рубрикатор статей?
0
KIRAExpert
15 января 2023, 15:21
Не в первый раз скидываю
0
Wise Rabbit
15 января 2023, 15:25
Тут в комментариях и в самих лекциях довольно часто попадаются ссылки на разные статьи. Я не понимаю, где доступ сразу ко всем статьям сайта))
0
KIRAExpert
15 января 2023, 15:32решение
https://javarush.com/groups/info.javarush.ru
+2
Wise Rabbit
15 января 2023, 16:43
спасибо)
0