我一直在使用ReflectionToStringBuilder来序列化对象以进行日志记录。但是我们遇到过无法打印完整对象的问题。喜欢以下案例
GetTimeBlocksOutput tbout = new GetTimeBlocksOutput();
TimeBlock tb = new TimeBlock();
tb.setAvailable(true);
List<TimeBlock> tbList = new ArrayList<TimeBlock>();
tbList.add(tb);
tbout.setTimeBlocks(tbList);
System.out.println(ReflectionToStringBuilder.toString(tbout));
打印
mycomp.GetTimeBlocksOutput@55d56113[timeBlocks [mycomp.TimeBlock@2]]
有一种简单的方法可以将序列化对象用于记录目的吗?主要是开箱即用,不需要手动更改要打印的对象
Json serializers是一个选项,但
答案 0 :(得分:3)
您看到的是默认的toString()
实施。
来自Object.java
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
只需覆盖此方法并返回符合您需求的String
表示形式!
GetTimeBlocksOutput可能是
public String toString() {
return this.timeBlocks.toString(); // assuming timeBlocks can't be null
}
TimeBlock可能是
public String toString() {
return "Available:" + this.available;
}
你没有太多关于TimeBlock和GetTimeBlocksOutput中包含的信息,但我相信你可以提出一个很好的实现。