Доброго времени суток.
Столкнулся со следующей проблемой. У меня имеется класс все поля которого изменяемые из вне. Понадобилось переопределить для этого класса метод equals()
. Согласно правилу необходимо изменить и метод hashCode()
. Но вот проблема: все поля объекта используемые в методе equals()
для сравнения часто меняют свои значения и если я буду использовать их для расчета hashCode
, то для одного и того же объекта его hashcode
будет меняться со временем.
Первый вопрос: как в этом случае следует переопределить hashCode()
?
И второй: соблюдать правило: "для одного и того же объекта методе hashCode()
должен возвращать одно и тоже значение" нужно только если мы собираемся использовать объекты класса в качестве ключей с коллекциями основанными на хешировании? Иначе это не обязательно?
В описанной Вами ситуации не вижу никакой проблемы. Изменение состояния объекта влечет за собой изменение значения хэшкода, и это нормально, так и должно быть.
По поводу второго вопроса: при переопределении equals()
всегда переопределяйте hashCode()
, оно, может быть, понадобится не всегда, но если вдруг понадобится, то Вы будете долго искать причину возникшей проблемы, если не переопределите hashCode()
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня в приложении есть NotificationActivity, которая вызывается собственно из NotificationИ после того как она сработала, если пользователь захочет открыть...
Дело, в том, что этот код я использую в одном классеНо мне нужно еще в трех классах этот метод
Вообщем есть кнопка и текстовое окно, по нажатии этой кнопки выполняется метод fr1watch(); НО, как сделать, чтобы результат работы этого метода...
Пытаюсь разобраться с паттерном Page object и возник вопрос: Пытаюсь автоматизировать тестирование сайта на котором есть