Java 7 и более поздние версии
Несмотря на то, что вы не запрашивали панацею, написание переопределения hashCode
теперь немного проще, чем в Java 7 и более поздних версиях.
Objects.hashCode
& Objects.hash
Начиная с Java 7, класс Objects
предлагает несколько вспомогательных методов для генерации значений хеш-кода.
См. мой ответ по связанному Вопросу для дальнейшего обсуждения.
Один элемент, не допускающий NULL
@Override
public int hashCode() {
return this.member.hashCode() ; // Throws NullPointerException if member variable is null.
}
Один элемент, допускающий NULL
@Override
public int hashCode() {
return Objects.hashCode( this.member ) ; // Returns zero (0) if `this.member` is NULL, rather than throwing exception.
}
Multi-member
@Override
public int hashCode() {
return Objects.hash( this.memberA , this.memberB , this.memberC ) ; // Hashes the result of all the passed objects’ individual hash codes.
}