/* 对于equals()的实现(重写,继承于Object类)是一个模型,
你可以把这个模型用于任何类型 ,下面是自定义的类Date来
说明这个模型 */
public class Date {
private final int month;
private final int day;
private final int year;
public Date(int month, int day, int year) {
this.month = month;
this.day = day;
this.year = year;
}
public int month() {
return month;
}
public int day() {
return day;
}
public int year() {
return year;
}
public String toString() {
return month() + "/" + day() + "/" + year();
}
public boolean equals(Object x) {
if (this == x) return true; //(1)如果这个对象的引用(this)和形参对象的引用都是指向同一个对象,那么它们就是相等的,不用再进行下面的比较
if (x == null) return false; //(2)如果形参为null,那就返回false,避免代码中有null引用
if (this.getClass() != x.getClass()) return false; //(3)判断两个对象是不是属于同一个类
Date that = (Date) x; //做类型转换之前一定要做上面那个检查
/* (4)只要实例变量不相同,就返回false */
if (this.day != that.day) return false;
if (this.month != that.month) return false;
if (this.year != that.year) return false;
return true;
}
}
一般这样重写equals()方法就可以了。