我在这做错了什么?
@Override
public int hashCode()
{
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
hashCodeBuilder.append(this.getId()).append(this.getDocFamilyUuid())
.append(this.getCorrelationId());
return hashCodeBuilder.hashCode();
}
Run Code Online (Sandbox Code Playgroud)
这就是我在groovy中创建对象的方式.字段被设置为静态常量
DocInfo docInfo = new DocInfo(id:DOC_ID, correlationId: CORRELATION_ID, docFamilyUuid: DOC_FAMILY_UUID)
Run Code Online (Sandbox Code Playgroud)
而我正试图断言
assert docInfo.hashCode() ==
new DocInfo([id:DOC_ID,
correlationId: CORRELATION_ID,
docFamilyUuid:DOC_FAMILY_UUID]).hashCode()
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 12
我怀疑问题是你正在调用hashCode()
而不是toHashCode()
假设你正在使用commons-lang HashCodeBuilder.换句话说,你得到了构建器本身的哈希码,而不是它正在构建的哈希码:)
现在奇怪的是,它们被记录为在我链接到的JavaDoc版本中返回相同的内容.所以我想知道你是否有旧版本 - 或者你可能完全不同于HashCodeBuilder
...
编辑:HashCodeBuilder.hashCode()
是的,在版本2.5+中被覆盖以返回toHashCode()
,但是OP使用的是版本2.3,这不起作用.