有什么理由使用 Apache HashCodeBuilder 而不是 Objects.hash 吗?

问题描述 投票:0回答:3

我正在重写对象的 hashCode 和 equals 方法。我正在使用 Apache Commons 库中的 EqualsBuilder 来覆盖 equals。由于我使用的是 Java 7,因此我计划使用 Objects 类中的内置 hash 方法,而不是 Apache Commons HashCodeBuilder。这种做法有什么问题吗?有什么理由更喜欢其中一种吗?

java hashcode
3个回答
4
投票

HashCodeBuilder
有时髦的反射哈希码实现,但除此之外,没有——你应该使用
Objects


4
投票

一个区别是

HashCodeBuilder
可以反射性地计算哈希码:

public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
}

也就是说,使用

HashCodeBuilder
,您不必列出各个字段,尽管您可以。


0
投票

我知道这是一个老问题,但想添加有关第三方库的一般规则:

始终使用标准库中的方法,而不是导入第三方库。

避免使用第三方库的主要原因是:

  1. 您可能只会使用一小部分导入的功能
  2. 外部库可能会引入您不知道的安全向量
  3. 您需要使依赖项保持最新,以确保库中的任何(安全和逻辑)修复都将进入您的项目
  4. 它会在您的项目和应用程序中造成膨胀

使用第三方库只有一个原因:

它包含标准库中不可用的功能,并且您很难创建

© www.soinside.com 2019 - 2024. All rights reserved.