



Взгляните на Commons4E
Он не обновлялся какое-то время, но я не думаю, что его нужно сильно менять?
Обновление: только что проверил 3.4.1, и он отлично работает.
Вы можете сделать это с помощью шаблонов кода в Eclipse.
Вот решение, который я нашел с примерами HashCodeBuilder и EqualsBuilder.
Шаблон EqualsBuilder:
public boolean equals(Object o) {
boolean result = false;
if (this == o) {
result = true;
} else if (o instanceof $CLASSNAME$) {
$CLASSNAME$ other = ($CLASSNAME$) o;
result = new org.apache.commons.lang.builder.EqualsBuilder()
.append($END$
.isEquals();
}
return result;
}
Шаблон HashCodeBuilder:
public int hashCode() {
return new org.apache.commons.lang.builder.HashCodeBuilder()
.append( $END$ )
.toHashCode();
}
Какой шаблон кода это для eclipse или как создать новый?
Пожалуйста, посмотрите этот пост о шаблонах кода (существующих и новых): eclipse.dzone.com/news/visual-guide-templates-eclipse
$ CLASSNAME $ больше не работает с eclipse 3.4; новая переменная - $ {enclosing_type}. другие $ .. $ также должны быть заменены.
Хорошее решение. Будет ли он использовать все переменные.
Обновите ссылку, чтобы она указывала на конкретную статью в блоге.
Я использую плагин Eclipse под названием "Commonclipse"
После установки вы увидите новый пункт контекстного меню «commonclipse», щелкнув правой кнопкой мыши исходный файл java. Он может генерировать методы equals, hashcode, toString и compareTo на основе общих библиотек Apache.
Чтобы установить его, используйте это из обновления eclipse: http://commonclipse.sourceforge.net
Шаблоны Java-кода Eclipse для eclipse 3.5.0, производные от шаблонов Бруно Конде:
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
} else if (obj == this) {
return true;
} else if (obj.getClass() != this.getClass()) {
return false;
}
${enclosing_type} other = (${enclosing_type}) obj;
return new EqualsBuilder()//
.appendSuper(super.equals(other))//
.append(${cursor})//
.isEquals();
}
и
@Override
public int hashCode() {
return new HashCodeBuilder(${cursor})//
.append()//
.toHashCode();
}
Вы можете настроить Eclipse для генерации toString() с помощью специального построителя. В нашем случае ToStringBuilder от Apache Commons Lang. Вы можете увидеть здесь http://azagorneanu.blogspot.com/2011/08/how-to-generate-equals-hashcode.html, как это сделать.
Это сообщение в блоге также содержит шаблоны Eclipse для создания equals(), hashCode() и compareTo() с использованием построителей Apache Commons Lang.
Я сделал этот шаблон, проверив несколько ответов, веб-сайтов и протестировав его на Eclipse Luna. Перейдите в Windows-> Preferences, а затем в Java-> Editor-> Templates и добавьте его туда.
${:import(org.apache.commons.lang3.builder.HashCodeBuilder, org.apache.commons.lang3.builder.EqualsBuilder)}
@Override
public int hashCode() {
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
hashCodeBuilder.append(${field1:field});
hashCodeBuilder.append(${field2:field});
hashCodeBuilder.append(${field3:field});
hashCodeBuilder.append(${field4:field});
hashCodeBuilder.append(${field5:field});
return hashCodeBuilder.toHashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
${enclosing_type} rhs = (${enclosing_type}) obj;
EqualsBuilder equalsBuilder = new EqualsBuilder();
equalsBuilder.append(${field1}, rhs.${field1});
equalsBuilder.append(${field2}, rhs.${field2});
equalsBuilder.append(${field3}, rhs.${field3});
equalsBuilder.append(${field4}, rhs.${field4});
equalsBuilder.append(${field5}, rhs.${field5});${cursor}
return equalsBuilder.isEquals();
}
Поскольку последнее обновление этого плагина датируется 2006 годом, он определенно не будет поддерживать Apache Commons Lang 3. Кстати, эта ссылка может быть более полезной: wiki.jiayun.org/Commons4E