一、什么是 Lombok

  Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 中的冗长代码,尤其是对于简单的 Java 对象(POJO),它通过注解实现这一目的(官网)。

二、如何引入 Lombok

  使用 Lombok 时,建议为编译器安装 Lombok 的插件。

1、使用 Maven 导入依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.10</version>
    <scope>provided</scope>
</dependency>

2、下载 jar 包

  下载链接 lombok-1.18.10.jar

三、Lombok 的基本操作

  使用 idea 的朋友,可以通过 ctrl+7 快速查看当前类的方法,其他编译器可以查看编译后的 class 文件。

1、@Getter 和 @Setter 的用法

  当用于指定字段时,为指定字段添加 Getter 或 Setter 方法(被 final 修饰的字段只有 Getter 方法,被 static 修饰的字段没有 Getter 和 Setter 方法),例如:

@Getter
@Setter
int id;

  当用于指定类上时,为该类的所有字段添加 Getter 或 Setter 方法,例如:

@Getter
@Setter
public class User {
...
}

  可以使用注解的 AccessLevel 属性设置访问级别,如果不想让指定字段有 Getter 或 Setter 方法,则将其 AccessLevel 设置为 NONE,例如:

@Setter(AccessLevel.NONE)
int age;

2、@ToString 的用法

  @ToString 用于修饰类,为指定类添加 toString 方法,可以设置其 exclude 属性和 of 属性,例如:

  测试类:

public class User {
    private int id = 1;
    private String name = "Yi-Xing";
    private String sex = "男";
    private int age = 20;
}

  使用@ToString 修饰时:

User(id=1, name=Yi-Xing, sex=男, age=20)

  使用@ToString(exclude = {"id","age"}) 修饰时:

User(name=Yi-Xing, sex=男)

  使用@ToString(of = {"id","age"}) 修饰时:

User(id=1, age=20)

3、@EqualsAndHashCode 的用法

  被@EqualsAndHashCode 注解修饰的类重写 equals、hashCode 方法,添加 canEqual 方法(用于判断是否是该类的子类)。通过设置其 exclude 和 of 属性来确定判断的字段。

4、@NonNull 的用法

  @NonNull 可用于修饰字段、方法参数,被@NonNull 修饰的变量不能为 null,如果为 null 则抛 NullPointerException 异常。其实被@NonNull 修饰的字段 Lombok 会为其添加如下代码:

public void setName(@NonNull String name) {
    if (name == null) {
        throw new NullPointerException("name is marked non-null but is null");
    } else {
        this.name = name;
    }
}

5、@AllArgsConstructor、@RequiredArgsConstructor、@NoArgsConstructor 的用法

  @AllArgsConstructor 为指定类添加满参构造方法,例如:

@AllArgsConstructor
public class User {
...
}

  @RequiredArgsConstructor 为被@NonNull 修饰但没有赋初值和被 final 修饰但没有赋初值的字段添加构造方法。

  @NoArgsConstructor 为指定类添加无参构造方法。

6、@Data 的用法

  @Data 注解并没有特殊的用法,只是将@Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor 组合到了一起。

7、@Builder 的用法

  被@Builder 修饰的类会添加一个类名 + Builder 的内部类,用法如下:

User user=User.builder().id(1).name("Yi-Xing").sex("男").age(20).build();

8、@Log 的用法

  被@Builder 修饰的类,Lombok 会为其添加如下代码:

private static final Logger log = Logger.getLogger(User.class.getName());

9、val 的用法

  val 是一个不确定的类型,和 js 中的 val 相似,只有在赋值时才确定类型。

String name = "Yi-Xing";
// 和上面的代码效果相同
val sex = "男";

我只是列举了 Lombok 一些常用的操作,其他详见官网


标题:Lombok 的基本操作
作者:Yi-Xing
地址:http://47.94.239.232:10014/articles/2020/01/13/1578880393219.html
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!