Какое назначение у методов equals() и hashCode()?​

Методы используются для сравнения объектов. Их необходимо переопределять во вновь созданных классах. Метод equals() в изначальном виде просто сравнивает ссылки:

Создатели Java возложили полную ответственность на разработчиков, так как именно создатель класса знает как правильно сравнить его объекты. Метод возвращает true в случае, если объекты идентичны. Иначе false.

Метод hashCode() возвращает целое значение, основываясь на полях объекта. У метода существует контракт:

1. При повторном вызове (при условии что состояние объекта не менялось) hashCode() возвращает одно и то же значение. Но в различных приложениях хэшкоды одинаковых объектов могут различаться.

2. Два объекта, для которых equals() возвращает true, имеют одинаковый хэшкод.

3. Не обязательно, что у разных объектов разные хэшкоды.


Комментарии:

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

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