Подтвердить что ты не робот

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

Проводя свой комментарий как ответ по запросу: Commonclipse, плагин Eclipse, который облегчает использование Apache Commons, делает то, что вы хотите сделать.

Предостережение: у меня нет недавнего опыта работы с этим плагином, поэтому я изначально был размещен как комментарий, а не как ответ.

Ответ 2

В настройках eclipse (Window > Preferences) перейдите в Java > Редактоp > Шаблоны.

Здесь вы можете создать табличку с именем: hashcode context: java description: Создать метод hashcode. Шаблон должен содержать что-то вроде этого:

public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this);
}

Сохраните и вернитесь в свой класс java. Введите имя (hashcode) и нажмите ctrl enter. Затем вы можете выбрать свой шаблон из выпадающего списка.

Сделайте то же самое для каждого метода, который вы хотите. Вы также можете создать шаблон, который также будет сочетать все вместе.