带有toString的java输出列表

时间:2017-05-19 06:59:46

标签: java

我的班级字段是List<>,我输出了tostring方法

private String subjectCode;
private Long clientSn;
private Long ruleId;
private String beginDate;
private List<LessonPreferenceItemDTO> classPlans;
 @Override
public String toString() {
    return "LessonPreferenceSaveReqDTO{" +
            "subjectCode='" + subjectCode + '\'' +
            ", clientSn=" + clientSn +
            ", ruleId=" + ruleId +
            ", beginDate='" + beginDate + '\'' +
            ", classPlans=" + classPlans +
            '}';
}

但是,classPlans outout是java实体,不是LessonPreferenceItemDTO字段信息,那么,如何输出classPlans在这个toString()

3 个答案:

答案 0 :(得分:2)

您还必须覆盖public String toString()的{​​{1}}。您可以提供 Apache Commons  ToStringBuilder.reflectionToString尝试输出每个属性。

例如,LessonPreferenceItemDTO类将使用ArrayList{围绕其元素并将}所包含的元素分隔为每个元素,来呈现自身包含元素。

如果您不喜欢toString()的结果格式,则必须在迭代每个元素时自行序列化列表。

答案 1 :(得分:1)

您必须覆盖toString()类中的LessonPreferenceItemDTO方法,但在此之后,您需要在此列表的每个元素上调用toString()

您可以使用Java 8流API

classPlans.stream()
.map(LessonPreferenceItemDTO::toString) 
.collect(Collectors.joining(","));

答案 2 :(得分:0)

  @Override
public String toString() {
    return "LessonPreferenceSaveReqDTO{" +
            "subjectCode='" + subjectCode + '\'' +
            ", clientSn=" + clientSn +
            ", ruleId=" + ruleId +
            ", beginDate='" + beginDate + '\'' +
            ", classPlans=" + classPlans.stream().map(LessonPreferenceItemDTO::toString).collect(Collectors.joining(",")) +
            '}';
}

我成功输出想要,使用java 8流,非常感谢@ Harmlezz @ Neeraj Jain