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

Java如何将对象转为可读字符串?已尝试三种方法仍未解决

解决Java Object数组转可读字符串的问题

你遇到的问题是因为alHolidays.get(dt)返回的是Object类型的数组,Java数组的默认toString()方法只会输出[Ljava.lang.Object;@哈希码这类格式,不会展示数组内的元素内容。以下是几种可行的解决方法:

1. 使用Java原生工具类(推荐)

如果是一维数组,直接用Arrays.toString()方法,它会遍历数组元素并拼接成可读格式:

import java.util.Arrays;

// 先强转成Object数组,再调用toString
System.out.println("tst: " + Arrays.toString((Object[]) alHolidays.get(dt)));

如果是多维数组,改用Arrays.deepToString()处理嵌套结构:

System.out.println("tst: " + Arrays.deepToString((Object[]) alHolidays.get(dt)));

2. 重写自定义对象的toString()方法

如果数组里存的是自定义类的对象,比如你的假期类,必须重写该类的toString()方法,否则数组元素还是会输出类名+哈希码。示例:

class Holiday {
    private String holidayName;
    private LocalDate date;

    // 构造方法、getter/setter省略

    @Override
    public String toString() {
        return "假期{" +
                "名称='" + holidayName + '\'' +
                ", 日期=" + date +
                '}';
    }
}

之后再用Arrays.toString()就能得到包含对象具体信息的字符串。

3. 用序列化工具生成JSON格式(适合复杂结构)

如果需要更规范的可读性格式,比如JSON,可以用Gson或Jackson这类库。以Gson为例:

import com.google.gson.Gson;

Gson gson = new Gson();
System.out.println("tst: " + gson.toJson(alHolidays.get(dt)));

输出会是标准的JSON字符串,清晰展示数组内的所有元素细节。

额外提示

可以先判断返回值是否为数组,避免类型转换异常:

Object obj = alHolidays.get(dt);
if (obj instanceof Object[]) {
    System.out.println("tst: " + Arrays.toString((Object[]) obj));
} else {
    // 非数组情况,直接调用toString
    System.out.println("tst: " + obj.toString());
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:05:49