Пишем свои equals() и hashCode() методы

Каждый 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();
}

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

Image CAPTCHA
Enter the characters shown in the image.