谈谈equals和hashcode的重写要点和代码讲解

equals方法的重写,一般是因为原有的equals方法无法满足我们所要比较的对象

原有的equals方法:

public boolean equals(Object object) {  
    if (object == this) {  
        return true;  
    }  
    return false;  
}  

equals方法重写的要求:

1.object不为空,用==比较

2.object的对象来自类(重写equals的类),用instanceof来比较

3.匹配属性

当然equals还有更详细的要求,可以看看JAVA编程思想

public class Equals {  
    int x;  
    int y;  
    public boolean equals(Object object) {  
        if (object == null) {  
            return false;  
        }  
        if (object instanceof Equals) {//判断object类型  
            Equals o=(Equals)object;//强制类型转换,可能object是子类  
            return o.x == this.x&&o.y == this.y;//匹配属性  
        }  
        return false;  
    }  
}  

Hashcode方法重写要求:

1.对同一对象多次调用,返回相同的整数,前提是将对象进行equals比较时所用信息没有被修改.

2.两个对象相同,调用Hashcode必须生成相同的整数结果

3.两个对象不相同,调用hashcode必须生成不同的整数结果

点赞