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() {} 
}
posted @   myLittleGarden  阅读(97)  评论(0编辑  收藏  举报
编辑推荐:
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示