我有最终字符串作为唯一ID的类。当然,我想重写equals,因此比较仅基于ID。是否正确的做法是只返回ID的哈希码,如下所示?我可以使用班级成员的散列码吗?
class ItemSpec{
final String name;
...
@Override
public boolean equals(Object o){
if(o != null && o instanceof ItemSpec){
return name.equalsIgnoreCase(((ItemSpec)o).name);
} else{
return false;
}
}
@Override
public int hashCode(){
if(name == null){
return 0;
} else{
return name.hashCode();
}
}
}
是的,这是确定.. – 2014-09-19 15:05:13
请注意,您的'equals'方法假定'name'不是null,但是你的'hashCode'方法假定它可能是。这是什么? – 2014-09-19 15:07:12
@JonSkeet对不起,我注意到添加后。编辑。 – NoMercyIncluded 2014-09-19 15:15:18