может избежать рекурсивности? Иногда вряд ли. Предположим: < /p>
Код: Выделить всё
Person {
String name;
Address address;
}
Имейте в виду, идентификаторы, как Eclipse и Intellij, генерирует рекурсивные equals () и hashcode ().
Они по умолчанию используют все поля. Если вы применяете инструменты генератора массой, вы спрашиваете проблемы. Здесь мой простой тест доказывал его.
все необходимо, - это класс, который имеет в качестве «компонента значения» другой объект, формирование графа объекта и рекомендованная реализация (). Да, вам нужен график в этом цикле, но это ничего нереально (представьте себе молекулы, пути на карте, взаимосвязанные транзакции ..). < /P>
Другая проблема - производительность . То, что рекомендуется для equals (), на самом деле сравнивает два графа объектов, потенциально огромные графики, можно в итоге сравнить тысячи узлов, не зная об этом. И не все из них необходимы в памяти! Считайте, что некоторые объекты могут быть ленивыми нагрузками. Можно в конечном итоге загружать половину базы данных на один equals () или hashcode () вызов. Как вам рекомендуется сделать, чем больше вероятность того, что у вас возникнут проблемы.
Подробнее здесь: https://stackoverflow.com/questions/160 ... rsive-deep
Мобильная версия