使用 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);
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Demo_Null/article/details/108506943
今日推荐