gpt4 book ai didi

java - java中重写equal方法的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-01 06:27:13 28 4
gpt4 key购买 nike

public class Person {

private String name;

public Person(String name) {
this.name = name;
}

public boolean equals(Person p) {
System.out.println("..............");
return p.name.equals(this.name);
}
}

嗨,我正在查看 OCJP 问题和答案,这个问题的答案是equals 方法没有正确覆盖 Object.equlas 方法。

我认为在这里用 String 名称覆盖是多余的,但这个问题的答案也不正确。

您能否指出我在这里缺少的概念......

注意:没有选项说明使用与此问题相同的参数覆盖 hasCode 和 equlas...

最佳答案

equals 的签名应该是:

public boolean equals(Object p)

您的 public boolean equals(Person p) 方法不会覆盖 Objectequals。它重载了。

可能的实现:

@Override
public boolean equals(Object other)
{
if (!(other instanceof Person))
return false;
Person p = (Person) other;
return p.name.equals(this.name);
}

关于java - java中重写equal方法的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28880263/

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