一、什么是 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
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!