lombok使用
Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。
它所有的增强都是通过注解实现,所以了解其使用主要了解一下注解即可。更全的注解文章见 lombok的使用详解
一、maven配置
1 2 3 4 5 | <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> </dependency> |
二、@Data
@Data 强悍的组合功能包
相当于注解集合。效果等同于@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor。
import lombok.Builder; import lombok.Data; import lombok.experimental.Tolerate; @Data public class Student { private String name; private int age; @Tolerate public Student() {} }
public Class Demo { @Test public void testLombok() { Student student = new Student(); student.setName("stu"); logger.info(student.toString()); } }
三、@Builder
lombok中的@Builder支持构造者模式。@Builder
提供了一种比较推崇的构建值对象的方式,非常推荐的一种构建值对象的方式。缺点就是父类的属性不能产于builder。
1 2 3 4 5 6 7 8 9 10 11 12 | @Builder public class Demo { private final int finalVal = 10; private String name; private int age; } public static void main(String[] args) { Demo demo = Demo.builder().name( "aa" ).age(10).build(); System. out .println(demo); } |
使用@Builder后,就没有了无参构造函数。若需要,可以自己写构造函数。比如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Builder public class Demo { private final int finalVal = 10; private String name; private int age; public Demo() {} public Demo(String name, int age) { this .name = name; this .age = age; } } |
或者使用@NoArgsConstructor 和 @AllArgsConstructor
1 2 3 4 5 6 7 | @Data @NoArgsConstructor @AllArgsConstructor @Builder <br> public class Demo { private final int finalVal = 10; private String name; private int age; } |
或者可以使用@Tolerate
注解
1 2 3 4 5 6 7 8 9 10 | @Builder public class Demo { private final int finalVal = 10; private String name; private int age; @Tolerate public Demo() {} } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架