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方法。
我认为用名称来覆盖这里是多余的,但是这个问题的答案也不正确。
请指出我在这里缺少的概念......
注意:没有选项说明覆盖hasCode和equlas与此问题的参数相同...
答案 0 :(得分:12)
equals
的签名应为:
public boolean equals(Object p)
您的public boolean equals(Person p)
方法未覆盖Object
的{{1}}。它超载了它。
可能的实施:
equals
答案 1 :(得分:7)
@Override
public boolean equals(Object ob) {
if (!(ob instanceof Person)) {
return false;
}
Person p = (Person)ob;
return p.name.equals(this.name);
}
ClassCastException证明
NullPointerException证明(Is null check needed before calling instanceof)