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

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条)

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格