我正在尝试下面的代码。
class dog{
private String name;
public dog(String n){
name = n;
}
public String getname(){ return name; }
public void setname(String n){ name =n;}
public boolean equals(Object o){
//if (( o instanceof dog )&& (((dog)o).name == name)) return true;
if (( o instanceof dog )&& (((dog)o).name.equals(name))) return true;
else return false;
}
public int hashcode(){
return name.length();
}
public String toString(){
return "Name:"+name;
}
}
这是我的狗课。现在在 Main 方法中,我正在尝试执行以下操作
Map<Object,Object> m = new HashMap <Object, Object>();
dog p = new dog("GM");
dog q = new dog ("GM");
System.out.println(p.equals(q));
m.put ( new dog("GM"),"K2");
System.out.println(m.get(new dog("GM")));
我得到一个真值和一个空值。我期待一个 K2 而不是 null 。有人可以帮我解决这个问题。我已经覆盖了 hashcode 和 equals 方法。我错过了什么?
编辑: - 更改等于函数。结果相同。