gpt4 book ai didi

java - 我应该重写 Object.equals(Object) 方法吗?

转载 作者:行者123 更新时间:2023-12-01 17:00:14 25 4
gpt4 key购买 nike

我有同一个类的两个实例。

public class Gilda {
private String nome;
public Gilda(String nome) {
this.nome = nome;
}
// More stuff
}

当尝试通过Object.equals(Object)方法比较它们时,它返回false。这很奇怪,因为 nome 在这两个实例上具有相同的值。

比较是如何进行的?这是预期的行为吗?我应该重写该方法吗?

最佳答案

是的,您必须覆盖它。如果不这样做,您将使用 Object 本身提供的版本,该版本默认为引用相等(它们是相同的“物理”对象)。

根据您的 IDE,这可能会自动为您编写。例如,IntelliJ 14 刚刚为我写了这个:

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

Gilda gilda = (Gilda) o;
if (nome != null ? !nome.equals(gilda.nome) : gilda.nome != null) return false;

return true;
}

当然,不要忘记 hashCode,它应该始终与 equals 同时完成:

@Override
public int hashCode() {
return nome != null ? nome.hashCode() : 0;
}

关于java - 我应该重写 Object.equals(Object) 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138111/

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