Шок! Метод hashCode в Java не имеет отношения к адресу памяти

Класс Object в Java имеет метод hashCode. Когда ходишь по собеседованиям, то многие ожидают в ответе на описание метода hashCode услышать фразу, что он возвращает адрес памяти. Но на самом деле, метод hashCode  зависит от реализации. Я уже писал об этом однажды. Думаю, что стоит написать ещё раз.

Так вот, запомните:

  • Число возвращаемое реализацией метода hashCode из класса Object в Java в спецификации не закреплено. Оно зависит от реализации.
  • В OpenJDK версии 6 и 7 метод hashCode у класса Object возвращает случайно сгенерированное число, но при повторных вызовах на том же самом экземпляре объекта возвращается то же число, что было сгенерированно для первого раза.
  • В OpenJDK версии 8 и 9 метод hashCode генерирует число на основе состояние потока.

Разумеется, нужны ссылки: ссылка1, ссылка 2.


Поделиться:
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован.

*