gpt4 book ai didi

java - 在添加了字段的类中自动更新 equals() 和 hashCode() 方法。

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:43 25 4
gpt4 key购买 nike

生成 equals()hashCode() 很简单,IDE 的帮助可以轻松生成它们。但是随着时间的推移,可能会有更多的新字段添加到对象中。当项目的复杂性变得更高(代码中使用的对象数量变得更高)时,有时生成 equals()hashCode() 可能会变得更加复杂。

向 bean 添加新字段的那一刻,人们必须重新生成 equals()hashCode() 方法。如果有人忘记重新生成这将导致失败。

在添加新字段时,我找不到自动更新 equals()hashCode() 的方法。我用 apache.commons.builder 发现了一些有趣的方法

现在我们可以通过以下方式覆盖equals()hashCode()

@Override
public boolean equals(Object o) {
return EqualsBuilder.reflectionEquals(this, o);
}

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

现在添加一个新字段不再是使用相同的 equals()hashCode() 的问题。

现在我的问题是,有没有更好的方法来做到这一点。同样,这样我们也可以使用 toString() 方法。

最佳答案

例如,在许多集合中调用 equals 和 hashCode 方法的次数过多。我的投票是避免在上述方法中使用反射。

Guava 对此有另一种方法。 AutoValue报价

AutoValue provides an easier way to create immutable value classes, with a lot less code and less room for error, while not restricting your freedom to code almost any aspect of your class exactly the way you want it.

关于java - 在添加了字段的类中自动更新 equals() 和 hashCode() 方法。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013619/

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