java之Lombok
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法
pom依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>
<version>1.18.2</version> </dependency>
下面只是介绍了几个常用的注解,更多的请参见https://projectlombok.org/features/index.html
@Getter/@Setter
可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。
@EqualsAndHashCode
默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。
@ToString
生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
@NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor
无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。
@Data
@ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,我们使用这个注解就足够了
使用示例 (以下5个注解,可以只使用@Data注解代替):
@Getter @Setter @ToString @NoArgsConstructor @EqualsAndHashCode public class UserEntity { private String id; private String lastName; private String email; private Integer age; }
@Builder
优雅的对属性赋值,对外保持private setter
@Getter @Builder(toBuilder = true) public class XwjUser implements Serializable { private static final long serialVersionUID = 1L; private int id; private String message; private Date sendTime; }
public static void main(String[] args) { // @Builder注解赋值新对象 XwjUser user = XwjUser.builder().id(1).sendTime(new Date()).message("hahah").build(); System.out.println(user.toString()); // 修改实体,要求实体上添加@Builder(toBuilder=true) user = user.toBuilder().id(2).build(); System.out.println(user.toString()); }
注意:在使用@Builder(toBuilder=true)的时候,得配合@AllArgsConstructor一起使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 通过一个DEMO理解MCP(模型上下文协议)的生命周期
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· AI浏览器自动化实战
· 通过一个DEMO理解MCP(模型上下文协议)的生命周期
· C#/.NET/.NET Core技术前沿周刊 | 第 34 期(2025年4.7-4.13)
· Chat to MySQL 最佳实践:MCP Server 服务调用
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南