Lombok @ToString 注解:快速打印对象内容
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 80w+ 字,讲解图 3365+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2700+ 小伙伴加入学习 ,欢迎点击围观
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
,不仅可以提升开发效率,还能保持代码整洁,减少出错几率。