Menu

#9 В классах модели необходимо переопределять методы equals() и hashCode()

Started
nobody
None
High
Defect
2014-11-23
2014-11-19
Anonymous
No

Originally created by: kolgen...@gmail.com
Originally owned by: MEXAHIK3...@gmail.com

Поскольку согласно Moodle API методы создания, получения (и т.д.) объектов различных классов модели оперируют с множествами объектов (Set), то множество должно быть способно различить два одинаковых объекта в случае их добавления и автоматически препятствовать этому (добавить только один объект). Для обеспечения этой способности необходимо в классах-сущностях выполнить переопределение методов equals() и hashCode(). Это удобно выполнить с помощью NetBeans, выбрав из контекстного меню Вставка кода - equals() и hashCode(). Думаю, что для сравнения достаточно указать только id (будем полагаться на Moodle, что он не даст двух одинаковых id при создании двух объектов).
Для примера можно смотреть класс MoodleCategory.
Хорошая статья по этому поводу:
http://info.javarush.ru/Lenchik854/2014/08/15/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0%D0%BC%D0%B8-hashCode-%D0%B8-equals-%D0%B2-%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5-Java-.html

Discussion

  • Anonymous

    Anonymous - 2014-11-21

    Originally posted by: kolgen...@gmail.com

    ВАЖНО - Использование поля id - неправильное решение. В случае программного создания двух объектов на стороне клиента значения их id не указываются (их задаст сервер), а значит задаются значениями по умолчанию (=0) и поэтому при добавлении в набор (Set) добавляется только одна коллекция, т.к. в случае использования в equals() и hashCode() поля id - они считаются одинаковыми.
    Поэтому будем использовать в качестве уникального идентификатора объектов поле name в методах equals() и hashCode().
    Класс MoodleCategory я в соответствии с этим уже обновил.

    Labels: -Priority-Medium Priority-High
    Status: Started

     
  • Anonymous

    Anonymous - 2014-11-21

    Originally posted by: MEXAHIK3...@gmail.com

    В классе MoodleCategory пропали все коментарии, возможны вы забыли обновить в Нетбинсе, потому что я их точно добавлял.

     
  • Anonymous

    Anonymous - 2014-11-23

    Originally posted by: kolgen...@gmail.com

    ОК. Классы MoodleCategory и MoodleCourse остаются за мной. Я допишу туда комментарии.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.