Middle
21
0
questionbank

Расскажи о контрактах методов equals и hashCode в Java.

Ответ от нейросети sobes.tech
  • Рефлексивность: для любого ненулевого ссылочного значения x, x.equals(x) должно возвращать true.

  • Симметричность: для любых ненулевых ссылочных значений x и y, x.equals(y) должно возвращать true тогда и только тогда, когда y.equals(x) возвращает true.

  • Транзитивность: для любых ненулевых ссылочных значений x, y и z, если x.equals(y) возвращает true и y.equals(z) возвращает true, то x.equals(z) должно возвращать true.

  • Согласованность: для любых ненулевых ссылочных значений x и y, многократный вызов x.equals(y) должен постоянно возвращать true или постоянно возвращать false, при условии, что никакая информация, используемая в сравнениях equals на объектах, не изменяется между вызовами.

  • Для любого ненулевого ссылочного значения x, x.equals(null) должно возвращать false.

  • Если два объекта равны в соответствии с методом equals(Object), то вызов метода hashCode для каждого из двух объектов должен давать одинаковое целочисленное значение.

  • Не требуется, чтобы если два объекта неравны в соответствии с методом equals(java.lang.Object), то вызов метод

  • Рефлексивность: для любого ненулевого ссылочного значения x, x.equals(x) должно возвращать true.

  • Симметричность: для любых ненулевых ссылочных значений x и y, x.equals(y) должно возвращать true тогда и только тогда, когда y.equals(x) возвращает true.

  • Транзитивность: для любых ненулевых ссылочных значений x, y и z, если x.equals(y) возвращает true и y.equals(z) возвращает true, то x.equals(z) должно возвращать true.

  • Согласованность: для любых ненулевых ссылочных значений x и y, многократный вызов x.equals(y) должен постоянно возвращать true или постоянно возвращать false, при условии, что никакая информация, используемая в сравнениях equals на объектах, не изменяется между вызовами.

  • Для любого ненулевого ссылочного значения x, x.equals(null) должно возвращать false.

  • Если два объекта равны в соответствии с методом equals(Object), то вызов метода hashCode для каждого из двух объектов должен давать одинаковое целочисленное значение.

  • Не требуется, чтобы если два объекта неравны в соответствии с методом equals(java.lang.Object), то вызов метод

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

javaequalshashcodeobject-equalitycustom-classescollections