Представьте, что мы имеем следующий простой изменяемых класса:Как сохранить хэш-код объекта согласованным во время выполнения приложений?
public class Point {
private int x;
private int y;
...
public void addToX(int delta) {
x += delta;
}
public void addToY(int delta) {
y += delta;
}
}
Переопределение метода hashCode
, используя только поле класса x
и y
не будет работать, так как значения могут изменяться во время выполнения, когда метод addToX
/addToY
является называется.
Так что мне было интересно, какая подходящая реализация hashCode
будет для mutable классов?
Это противоречивая цель. Если вы хотите, чтобы хэш-код был функцией значения объекта, и если значение объекта может измениться, вам придется принять, что хэш-код может измениться. –
Вычислить хэш-код в первый раз и сохранить его в поле объекта. Используйте это значение при последующих вызовах. –
Почему бы не принять оригинальный хэш-код? – Tony