Abh*_*air 3 java methods overriding object
我读到要在java中使用equals()方法我们还必须覆盖hashcode()方法,并且相等(逻辑)对象应该具有eual哈希码,但这并不意味着基于引用的相等!这是我的重写equals()方法的代码,我应该如何覆盖hashcode方法:
@Override
public boolean equals(Object o)
{
if (!(o instanceof dummy))
return false;
dummy p = (dummy) o;
return (p.getName() == this.getName() && p.getId() == this.getId() && p.getPassword() == this.getPassword());
}
Run Code Online (Sandbox Code Playgroud)
我只是想了解它是如何工作的,所以只有三个字段,即名称,id和密码,只是试图比较我在main()中定义的两个对象!我还需要知道是否总是需要覆盖hashcode()方法和equals()方法?
Hashcode平等并不意味着什么.但是,哈希码不等式应该意味着equals会产生错误,并且任何两个相等的项应该始终具有相同的哈希码.
出于这个原因,用equals覆盖hashcode总是明智的,因为许多数据结构都依赖于它.