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
相关产品推荐
相关产品推荐

