lombok 的 @tostring 注解可自动生成 tostring() 方法,支持 exclude 排除字段、of 指定字段、处理循环引用及忽略 null 值等高级配置,提升可读性并减少样板代码。

在 Java 中,手动重写 toString() 方法容易出错、冗长且维护成本高。Lombok 的 @ToString 注解能自动生成简洁、可读性强的 toString() 实现,省去样板代码。
基本用法:一键生成默认 toString
只需在类上添加 @ToString,Lombok 就会为所有非静态字段生成 toString() 方法,格式为:ClassName(field1=value1, field2=value2, ...)。
@ToString
public class User {
private String name;
private int age;
private String email;
}
调用 new User("Alice", 25, "alice@example.com").toString() 输出类似:User(name=Alice, age=25, email=alice@example.com)
排除字段:用 exclude 忽略敏感或冗余字段
某些字段(如密码、大对象、循环引用字段)不适合出现在 toString() 中,可用 exclude 参数排除:
@ToString(exclude = {"password", "profileImage"})
public class User {
private String name;
private String password; // 不会出现在 toString 中
private byte[] profileImage; // 也不出现
private int age;
}
只包含指定字段:用 of 精确控制输出内容
如果只想显示部分字段,使用 of 属性(优先级高于 exclude):
@ToString(of = {"name", "age"})
public class User {
private String name;
private String password;
private int age;
private List<string> roles;
}</string>
结果示例:User(name=Alice, age=25)
高级配置:处理 null、循环引用与自定义格式
-
忽略 null 值:加
doNotUseGetters = true可避免 getter 调用(防止 NPE),但不自动跳过 null 字段;真正跳过需配合includeFieldNames = false或自定义模板(较少用) -
处理循环引用:Lombok 默认不检测循环引用,若存在父子双向引用,可能引发
StackOverflowError。建议对一方使用@ToString.Exclude(推荐写在字段上更灵活) -
自定义方法名或逻辑:Lombok 不支持重命名
toString()方法,如需特殊格式(如 JSON 风格),应单独写方法,不依赖@ToString
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











