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必须生成不同的整数结果