Каждый java-разработчик рано или поздно сталкивается с необходимостью переопределения метода equals, а соответственно и hashCode(). Кто-то пишет их сам, кто-то использует прибамбасы среды разработки. Например, я частенько использовал автоматическую генерацию в среде IDE Intellij IDEA (ALT + Insert / equals() and hashCode()), пока не нашел "красивое" решение, реализованное в библиотеке org.apache.commons - HashCodeBuilder() и EqualsBuilder().
Конечно, кто-то скажет, зачем использовать какие-то дополнительные библиотеки и классы, когда все можно самому написать. Ну, что сказать, на вкус и цвет...
Пример:
@Override
public boolean equals(Object obj) {
if (obj instanceof Period) {
Period p = (Period) obj;
EqualsBuilder builder = new EqualsBuilder();
builder.append(this.from, p.from);
builder.append(this.till, p.till);
return builder.isEquals();
}
return false;
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(this.from).append(this.till).toHashCode();
}
public boolean equals(Object obj) {
if (obj instanceof Period) {
Period p = (Period) obj;
EqualsBuilder builder = new EqualsBuilder();
builder.append(this.from, p.from);
builder.append(this.till, p.till);
return builder.isEquals();
}
return false;
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(this.from).append(this.till).toHashCode();
}

Отправить комментарий