Lombok的@ToString注解可自动生成符合惯例的toString()方法,支持exclude排除字段、of指定字段、callSuper调用父类、includeFieldNames控制格式、doNotUseGetters避免getter副作用、skipNulls跳过null值。

Java 中手动重写 toString() 方法容易出错、重复且维护成本高。Lombok 的 @ToString 注解能自动生成简洁、可读、符合惯例的字符串表示,大幅简化开发。
基础用法:一键生成默认 toString
只需在类上添加 @ToString,Lombok 就会为所有非静态字段(包括 private 字段)自动生成 toString() 方法,格式为:ClassName(field1=value1, field2=value2, ...)。
例如:
@ToString
public class User {
private String name;
private int age;
private String password; // 敏感字段,后面会处理
}
// 生成的 toString 类似:User(name="Alice", age=30, password="123456")
排除敏感或冗余字段:用 exclude
某些字段(如密码、大对象、循环引用属性)不适合出现在 toString() 中,可用 exclude 参数过滤:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
-
@ToString(exclude = "password")—— 完全不包含该字段 -
@ToString(exclude = {"password", "avatar"})—— 排除多个字段
只包含指定字段:用 of
如果只想展示关键字段,更推荐使用 of 显式声明,语义更清晰、更安全:
-
@ToString(of = {"name", "age"})—— 仅输出 name 和 age - 未列出的字段(包括新增字段)不会被自动加入,避免意外泄露
高级控制:调用父类、忽略 null、自定义格式
@ToString 还支持细粒度配置:
-
callSuper = true:把父类的toString()结果也拼进去 -
includeFieldNames = false:输出User("Alice", 30)而非带字段名的形式 -
doNotUseGetters = true:直接访问字段值,不调用 getter(避免副作用或 NPE) -
skipNulls = true:跳过值为null的字段(需 Lombok 1.18.20+)

















