You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何处理传入equals方法的对象转字符串异常 仅可修改equals方法

解决方案

你要求仅修改equals方法内部逻辑、仅可新增@Override注解,不需要修改其他代码的前提下,最简实现如下:

首先给equals方法加上@Override注解,然后替换方法内部代码为:

@Override
public boolean equals(Object obj) {
    // 自引用直接返回相等
    if (this == obj) return true;
    // 空对象或类型不匹配直接返回不相等
    if (obj == null || getClass() != obj.getClass()) return false;
    MediaItem target = (MediaItem) obj;
    String currentTitle = getTitle();
    String targetTitle = target.getTitle();
    // 处理title为空的边界情况
    if (currentTitle == null && targetTitle == null) return true;
    if (currentTitle == null || targetTitle == null) return false;
    // 修剪前后空格后忽略大小写比较
    return currentTitle.trim().equalsIgnoreCase(targetTitle.trim());
}

原实现问题说明

你之前的实现直接调用obj.toString()取值,但你编写的toString方法本身存在语法错误(方法内部没有obj这个变量),运行时实际调用的是Object类的默认toString方法,才会输出MediaItem@xxxx的类名加哈希值格式。本次实现直接取目标对象的title字段,完全避开了toString的问题,符合你不能修改其他代码的要求。

内容的提问来源于stack exchange,提问作者SomeRandomName

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:24:03