| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > equals() и наследование |
| Автор: Ares4322 7.2.2013, 13:07 |
| Доброго времени суток! Такая проблема. Есть иерархия классов-сущностей. То есть основное их назначение - хранить состояние. Необходимо реализовать для них equals() и hashCode(). Вопрос: при реализации equals() для дочерних классов из этой иерархии, нужно ли вызывать equals родительского класса? |
| Автор: LSD 7.2.2013, 13:36 |
| Сильно зависит от того, как должны сравниваться наследники. Пусть B наследуется от A. Могут ли быть ситуации в которых B.equals(A) и A.equals(B)? |
| Автор: Ares4322 7.2.2013, 14:45 | ||||
| Вопрос не в этом. Класс Parent
Класс Child
|
| Автор: LSD 7.2.2013, 15:11 |
Именно в этом! Если B.equals(A) и A.equals(B) всегда false, то стоит вызывать (это самый простой способ проверить все поля базового класса). Иначе - нет. |
| Автор: powerOn 7.2.2013, 16:44 |
| Рекомендую для написания equals и hashCode использовать commons-lang: http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/builder/EqualsBuilder.html |
| Автор: Ares4322 7.2.2013, 17:52 |
| Спасибо, все понял. |