如何更改Lombok的@ToString生成的方法的输出?

时间:2018-05-16 21:10:27

标签: java tostring lombok

如果我们使用Lombok的@ToString,例如@Data的一部分,则输出格式难以阅读:

@Data
class Test {
    int a;
    int b;
}

Test test = new Test(1, 2);
System.out.println(test.toString());

这导致以下输出:

a=1, b=2

可以像这样打印吗?如果类的结构与地图和列表高度嵌套,则很难读取它。

a=1,
b=2

2 个答案:

答案 0 :(得分:1)

无法更改打印文本的格式。请参阅the documentation

该注释的重点是为您提供一种快速简便的方法来生成可用于记录等的方法。它并非设计为通用的。

如果要跨多个类实现自己的功能,可以使用面向方面的编程来实现此目的。

答案 1 :(得分:1)

lombok通常不具备该功能,但是可以通过使用其他库(例如 commons-lang3 )来实现。

解耦的解决方案 ,类和序列化器未绑定。

System.out.println(ToStringBuilder.reflectionToString(test, ToStringStyle.MULTI_LINE_STYLE));

耦合解决方案

class Test {
    private final int a;
    private final int b;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
    }
}

呼叫序列化程序:

System.out.println(test.toString());

请注意,如果使用此解决方案,则可能与ToString方法上的@Data发生冲突,因此要避免这种情况,必须使用下标(@ Getter,@ Setter,@ RequiredArgsConstructor,...)注释而不是os @Data。 / p>