gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:47:28 25 4
gpt4 key购买 nike

如果我们使用 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

最佳答案

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

解耦解决方案,类和序列化器不绑定(bind)。

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 发生冲突,因此为避免这种情况必须使用 underhood(@Getter, @Setter, @RequiredArgsConstructor, ...) 注释而不是 @Data。

关于java - 如何更改 Lombok 的 @ToString 生成的方法的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50379937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com