Java Commons Lang HashCodeBuilder与Eclipse hashCode()生成
我看过ApacheCommonsLang的HashCodeBuilder和EclipseHashCode()生成。我不得不说Eclipse的hashCode()非常难看,但就性能而言,作为HashCodeBuilder使用是否更好(因为构建器需要额外的对象创建) 我还想知道您对equals()一代和Commons Lang的EqualsBuilder的看法Java Commons Lang HashCodeBuilder与Eclipse hashCode()生成,java,eclipse,equals,apache-commons,hashcode,Java,Eclipse,Equals,Apache Commons,Hashcode,我看过ApacheCommonsLang的HashCodeBuilder和EclipseHashCode()生成。我不得不说Eclipse的hashCode()非常难看,但就性能而言,作为HashCodeBuilder使用是否更好(因为构建器需要额外的对象创建) 我还想知道您对equals()一代和Commons Lang的EqualsBuilder的看法 如果您有更好的解决方案,请也发布:)HashCodeBuilder比编写自己的哈希函数慢得多。它使用反射来迭代每个字段。如果您经常调用此方法
如果您有更好的解决方案,请也发布:)HashCodeBuilder比编写自己的哈希函数慢得多。它使用反射来迭代每个字段。如果您经常调用此方法,您可能会看到性能下降,这对于您的情况可能是可以容忍的,也可能是不可以容忍的
eclipse生成的
hashCode
函数使用素数来帮助创建更好的散列函数。详细介绍了为什么HashCodeBuilder和EqualBuilder比默认方法更好,但如果您关心性能,最好编写自己的hashcode和equals方法。这是因为它们使用反射方法
规则是
相等的对象应生成相同的哈希代码,
相等的hashcode并不意味着对象相等您必须在性能和可维护性之间进行选择。commons版本将适应类的变化,但速度较慢。Eclipse生成的版本速度很快,但在添加新字段后不会更新,这使其更难维护。对于程序员来说,这可能是一个更好的问题。SE.Eclipse的hashCode是什么意思?Eclipse有一个名为
Generate hashCode()和equals()的函数
在Source
meu下,该meu允许您通过选择要生成hashCode的字段来生成方法。我想用append()
方法手动附加我想要的每个字段,而不是反射方法。或者它没有使用附加字段的hashCode()
,并通过反射计算hashCode?如果您使用的是appendMethod,那么它看起来好像没有使用反射。