使用 Lombok 释放百行代码

时间:2022-07-26
本文章向大家介绍使用 Lombok 释放百行代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.1 简介

1.1.1 概述

  Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注释,用来消除 Java 类中的大量样板代码。可以替换数百行代码从而产生干净,简洁且易于维护的 Java 类。Lombok 也存在一定风险,在一些开发工具商店中没有 Project Lombok 支持选择。 IDE 和 JDK 升级存在破裂的风险,并且围绕项目的目标和实施存在争议。

1.1.2 相关依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
</dependency>

1.1.3 IDEA 使用 Lombok

  想要使用 Lombok 必须要使用支持 Lombok 的开发工具,此处以 IDEA 为例,IDEA 必须要安装相关插件才能使用 Lombok,其他开发工具类似。

1.2 简单实用

1.2.1 常用注解

注解

说明

@Setter

注解在类或字段,注解在类时为所有字段生成 setter 方法,注解在字段上时只为该字段生成 setter 方法

@Getter

使用方法同上,区别在于生成的是 getter 方法。需要注意的是 Boolean 生成的是 isXxx 不是 getXxx

@ToString

注解在类,添加 toString 方法

@EqualsAndHashCode

注解在类,生成 hashCode 和 equals 方法

@NoArgsConstructor

注解在类,生成无参的构造方法

@RequiredArgsConstructor

注解在类,为类中需要特殊处理的字段生成构造方法,比如 final 和被 @NonNull 注解的字段

@AllArgsConstructor

注解在类,生成包含类中所有字段的构造方法

@Data【常用】

注解在类,生成 setter/getter、equals、canEqual、hashCode、toString 方法,如为 final 属性,则不会为该属性生成 setter 方法

@Slf4j

注解在类,生成 log 变量,严格意义来说是常量

1.2.2 示例

/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/10
 * @description Lombok 示例
 */
@Data
public class Student {
    private Long id;
    private String name;
    private Integer age;
    private Date birDate;
    private String birStr;

}

1.2.4 自定义 setter/getter

/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/10
 * @description 自定义 setter/getter
 */
@Data
public class Student {
    private Long id;
    private String name;
    private Integer age;
    private Date birDate;
    private String birStr;

	/*
	 * 	会使用此处的 setter/getter,lombok 不会再生成对应的方法
	 */
    public Date getBirDate() {
        return birDate;
    }

    public void setBirDate(Date birDate) {
        this.birDate = birDate;

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        this.birStr = sdf.format(birDate);
    }

    public String getBirStr() {
        return birStr;
    }

    public void setBirStr(String birStr) {
        this.birStr = birStr;
    }
}
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/10
 * @description 测试
 */
public class Demo {

    public static void main(String[] args) {
        Student student = new Student();
        student.setBirDate(new Date());
        student.setName("张三");

        System.out.println(student);
    }
}