Как настроить hashCode () и equals (), сгенерированные Eclipse?

Рекомендуется, а иногда и необходимо, классы, представляющие значения ( классы значений ), переопределяют hashCode () , equals ( ) [и необязательно toString () ]. Значения, возвращаемые этими методами, зависят от всех или подмножества переменных-членов класса и его суперкласса. Чтобы реализовать их должным образом, вы должны знать немного теории о хешировании и немного алгебры и теории множеств (не слишком много, и почти все объясняется в javadocs для эти методы и в эффективной форме Java Джош Блох.)
В большинстве случаев реализация этих методов выполняется по шаблону, а IDE (например, Eclipse JDT) включают инструменты для их создания. Однако генераторы инструментов не могут делать никаких предположений и генерировать эти методы, используя только конструкции, доступные в языке и стандартной библиотеке. Из-за этого эти методы обычно выглядят очень некрасиво.

Другой способ реализовать эти методы - использовать такую ​​библиотеку, как Apache (commons-lang) HashCodeBuilder , EqualsBuilder и ToStringBuilder . Используя эти утилиты, можно реализовать свои собственные методы hashCode () и equals () , которые выглядят намного лучше.

Мой вопрос касается объединения этих двух подходов. Я хотел бы иметь возможность настраивать генераторы Eclipse hashCode () и equals () , чтобы они генерировались с помощью HashCodeBuilder и друзей. Возможно ли (и как) сделать это без настройки JDT? Написание только небольшого плагина, который переопределит реализации по умолчанию (но без изменения кода JDT).

Спасибо.

17
задан KiKMak 3 April 2014 в 11:29
поделиться