gpt4 book ai didi

java - 为什么我使用 hashcode builder 为 2 个相同的对象获得不同的 hashcode 值?

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:36 37 4
gpt4 key购买 nike

我在这里做错了什么?

        @Override
public int hashCode()
{
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
hashCodeBuilder.append(this.getId()).append(this.getDocFamilyUuid())
.append(this.getCorrelationId());

return hashCodeBuilder.hashCode();
}

这就是我在 groovy 中创建对象的方式。这些字段被设置为静态常量

DocInfo docInfo =  new DocInfo(id:DOC_ID, correlationId: CORRELATION_ID, docFamilyUuid: DOC_FAMILY_UUID)

我正试图断言

assert docInfo.hashCode() ==
new DocInfo([id:DOC_ID,
correlationId: CORRELATION_ID,
docFamilyUuid:DOC_FAMILY_UUID]).hashCode()

最佳答案

我怀疑问题是您正在调用 hashCode() 而不是 toHashCode(),假设您使用的是 commons-lang HashCodeBuilder .换句话说,您得到的是构建器本身的哈希码,而不是它正在构建的哈希码:)

现在奇怪的是,在我链接到的 JavaDoc 版本中,它们被记录为返回相同的内容。所以我想知道您是否有旧版本 - 或者您可能正在使用完全不同的 HashCodeBuilder 完全...

编辑:是的,HashCodeBuilder.hashCode() 在 2.5+ 版本中被覆盖以返回 toHashCode(),但是 OP 使用的是 2.3 版本,它没有那样工作。

关于java - 为什么我使用 hashcode builder 为 2 个相同的对象获得不同的 hashcode 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415349/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com