Java中如何重写equals()方法

 

/* 对于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()方法就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值