Я заметил в примерах hashCode()
, каждый использует те же поля для вызова hashCode()
внутри определения метода hashCode()
.Зачем мне нужно вызывать/инициализировать метод hashCode() для каждого члена класса?
Почему я должен вызвать/инициализировать метод hashCode()
для каждого члена класса, так как хеш-код предназначен для нахождения местоположения объекта (исправьте меня, если я ошибаюсь)?
Итак, в чем цель вызова метода hashCode()
в определении метода hashCode()
.
Например:
public int hashCode() {
final int seed = 37;
int result = 1;
result = seed * result + ((name == null) ? 0 : name.hashCode());
result = seed * result + age;
result = seed * result + marks;
return result;
}
Здесь мы имеем два поля age
и name
. Какова цель name.hashCode()
на линии нет 4.
См. Также: https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode-- повторное использование hashCode является обычной практикой, поскольку оно будет следовать контракту для этого поля , Но никто не заставляет вас это делать. 'age', вероятно, является int, поэтому вы не можете вызвать hashCode() на нем ... – Fildor
Ok. Я понял. Но мой вопрос - почему ??? означает, почему нам нужно вызывать hashCode() над не примитивными членами? –