我正在重写对象的 hashCode 和 equals 方法。我正在使用 Apache Commons 库中的 EqualsBuilder 来覆盖 equals。由于我使用的是 Java 7,因此我计划使用 Objects 类中的内置 hash 方法,而不是 Apache Commons HashCodeBuilder。这种做法有什么问题吗?有什么理由更喜欢其中一种吗?
HashCodeBuilder
有时髦的反射哈希码实现,但除此之外,没有——你应该使用 Objects
。
一个区别是
HashCodeBuilder
可以反射性地计算哈希码:
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
也就是说,使用
HashCodeBuilder
,您不必列出各个字段,尽管您可以。
我知道这是一个老问题,但想添加有关第三方库的一般规则:
始终使用标准库中的方法,而不是导入第三方库。
避免使用第三方库的主要原因是:
使用第三方库只有一个原因:
它包含标准库中不可用的功能,并且您很难创建