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

Java打印JSON解析的自定义类对象输出类名@哈希值问题求解

问题原因
  • 你看到的model.Thingy@b4c966a格式输出是Java语言的默认机制,不属于代码错误:Java中所有类默认继承自java.lang.Object类,Object类提供的默认toString()方法返回值就是类全限定名@哈希码的十六进制形式,该后缀不是实际内存地址,是JDK为对象生成的哈希标识。你直接打印对象t时会自动调用该类的toString()方法,所以得到了对应输出。
  • 你之前的项目中同款代码可以输出预期内容,是因为之前项目里对应的实体类已经重写了toString()方法,当前项目的Thingy类没有做这个重写操作,所以调用了父类Object的默认实现。
修复方案

有三种常用修复方式,可根据项目情况选择:

  1. 手动在Thingy类中重写toString()方法,自定义输出内容,示例代码如下:
@Override
public String toString() {
    // 可根据需要展示的字段自行调整拼接逻辑
    return "Thingy{" +
            "name='" + name + '\'' +
            ", cate='" + cate + '\'' +
            '}';
}
  1. 如果项目引入了Lombok工具,直接在Thingy类上添加@ToString注解即可,框架会自动根据类的字段生成对应的toString方法,不需要手动维护代码。
  2. 不改动Thingy类的前提下,打印时主动拼接需要输出的字段,避免直接打印对象本身,示例如下:
System.out.println("输出内容:" + t.getName() + ",分类:" + t.getCate());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:18:00