Lombok @ToString 注解:快速打印对象内容
一则或许对你有用的小广告
欢迎加入小哈的星球,你将获得:专属的实战项目(4个项目都能学) / 1v1 提问 / 简历修改 / Java 学习路线 / 社群讨论 / 学习打卡 / 每月赠书
《Spring AI 项目实战(问答机器人、RAG 智能客服、联网搜索)》已完结,基于
Spring AI + Spring Boot 3.x + JDK 21...,查看介绍《从零手撸:仿小红书(微服务架构)》 已完结,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...,查看介绍;演示链接:http://116.62.199.48:7070/《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接:http://116.62.199.48/
新开坑项目:《从零手撸:秒杀系统高并发优化实战》 正在更新中...,查看介绍
截止目前,星球内专栏累计输出 150w+ 字,讲解图 5110+ 张,还在持续爆肝中.. 后续还会上新更多项目,已有 4700+ 小伙伴加入学习,欢迎点击围观
Lombok 的 @ToString 注解用于自动生成 toString() 方法,帮助快速打印对象的内容,以便调试或日志记录。默认情况下,@ToString 会将类中所有非静态字段包含在 toString() 方法中,并按字段声明的顺序显示字段值。
基本用法
@ToString 可以直接加在类上,自动生成 toString() 方法,包含所有字段的名称和值。
示例
import lombok.ToString;
@ToString
public class User {
private String name;
private int age;
}
上面的代码会生成以下 toString() 方法:
public String toString() {
return "User(name=" + this.name + ", age=" + this.age + ")";
}
这样可以直接使用 System.out.println(user); 输出对象的字符串表示。
常见参数
@ToString 注解提供了多种配置参数,以便定制 toString() 方法的生成方式。
exclude
exclude 参数用于排除不希望包含在 toString() 方法中的字段。可以指定一个或多个字段名:
import lombok.ToString;
@ToString(exclude = "password")
public class User {
private String name;
private int age;
private String password;
}
此时生成的 toString() 方法将不会包含 password 字段。
callSuper
callSuper 参数决定是否调用父类的 toString() 方法。如果当前类继承了一个父类,且父类的 toString() 方法中有重要的信息,可以将 callSuper 设置为 true,以便将父类的信息包含进来:
import lombok.ToString;
@ToString(callSuper = true)
public class Employee extends User {
private String position;
}
onlyExplicitlyIncluded
onlyExplicitlyIncluded 参数用于控制仅生成包含 @ToString.Include 注解的字段。这种方式适合想要手动选择部分字段,而不是默认全部生成的情况。
import lombok.ToString;
@ToString(onlyExplicitlyIncluded = true)
public class User {
@ToString.Include
private String name;
@ToString.Include
private int age;
private String password; // 未添加 @ToString.Include,不会包含在 toString() 中
}
注意事项
- 隐私数据:
@ToString默认包含所有字段,对于敏感信息(如密码、身份证号等),要特别小心,确保使用exclude或onlyExplicitlyIncluded排除这些字段。 - 继承关系:
callSuper可以帮助将父类的字段包含在toString()中,但应根据项目需求合理配置。 - 调试利器:
@ToString能快速生成有用的字符串表示,对于调试和日志记录非常实用。
小结
Lombok 的 @ToString 注解极大简化了 toString() 方法的编写,特别适用于需要频繁输出对象信息的场景。通过合理配置参数,如 exclude、callSuper 和 onlyExplicitlyIncluded,可以定制 toString() 的输出内容。合理地使用 @ToString,不仅可以提升开发效率,还能保持代码整洁,减少出错几率。
