HashCode от Object из дочернего класса

Иногда у нас возникает достаточно большая иерархия объектов. Часто в этой иерархии нам приходится переопределять стандартную реализацию hashCode() от класса Object на свою. Для чего нужен hashCode() и его связь с equals(Object other) можно прочесть в моей прошлой статье, посвящённой этим методам. Но что делать, если в последующем нам нужно в одном из дочерних классов вызвать первоначальную реализацию hashCode()?

Если мы вызовем super.hashCode(), то мы получим вызов родительского метода hashCode(). А если мы наследовались не от Object, а от другого класса, где уже написали свою реализацию hashCode()? Как пробраться через всё дерево наследования к корневому предку Object и вызвать его метод?

В Java это уже невозможно, но, к счастью, существует метод, который позволяет выполнить метод hashCode() от Object для любого объекта:

В метод System.identityHashCode(Object x) можно передать экземпляр любого объекта, и он вернёт то же самое значение, которое бы вернул метод hashCode() от класса Object.

Рекомендую ознакомиться с моим учебником Java, думаю, он вам понравится.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *