feizhongxue 2015-03-26 08:38 采纳率: 0%
浏览 1679
已采纳

JAVA 解释一下equals重写

最好能大致解释一下这段代码
//if (null == o)
// return false;
//这一段是做什么用的?

// Car c = (Car) o;
// (Car) o 的Car为什么要用括号括起来

public boolean equals(Object o) {
    if (null == o)
        return false;
    Car c = (Car) o;
    return this.color.equalsIgnoreCase(c.color)
            && this.number.equalsIgnoreCase(c.number)
            && this.brand.equalsIgnoreCase(c.brand);
}
  • 写回答

3条回答 默认 最新

  • 骆宏 2015-03-26 10:37
    关注

    在java的集合框架中,有多个api依赖于equals&hashCode方法。其中我们比较常用到的就是Set&Map两个接口。
    所以在自定义Override这两个方法时,需要同时Override。
    这里面有具体的原则,你可以参考下effective java的相关章节。

    public boolean equals(Object o) {
    if(this == 0) //添加这句,代表两个引用变量指向同一个对象
    return true;
    if (null == o) //对象为空,直接返回false
    return false;

    Car c = (Car) o;  //这句话调用之前,需要确保O继承了该类,否则会报类转换异常,所以代码存在bug
    return this.color.equalsIgnoreCase(c.color)  //这里就是比较具体的内容
            && this.number.equalsIgnoreCase(c.number)
            && this.brand.equalsIgnoreCase(c.brand);
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services