目录
lombok简介
Lombok 是一个用于简化 Java Bean 开发的工具,它通过注解的方式帮助开发者减少冗长且重复的代码。Java 项目中常常需要编写一些技术含量不高但却必不可少的代码,例如 getter、setter、toString 方法,或是处理异常和 I/O 流的关闭等操作。这些代码往往既不具备实际功能,又会使代码显得臃肿且影响可读性。Lombok 通过在源代码中使用注解,能够在编译时自动生成这些必要的方法,从而大大减少手动编写这些冗余代码,提高开发效率并优化代码的简洁性。
使用步骤
1. 引入依赖
在pom文件中加入以下内容:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2. 安装插件
打开 File -> Settings -> Plugins。
搜索 Lombok 并安装插件。
重启 IDE。
常用注解
1. @Getter / @Setter
注解在属性上,为属性提供get/set 方法;注解在类上,则为类中的所有属性提供 get/set方法。
默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
注解在类上:
@Getter
@Setter
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
注解在属性上:
public class User {
@Getter
@Setter
private Long id;
private String name;
private Integer age;
private String email;
}
2. @ToString
自动生成 toString() 方法,默认情况下,它会按顺序(以逗号分隔)打印你的类名称以及每个字段。
- 可以这样设置不包含哪些字段,例如:@ToString(exclude = “id”) / @ToString(exclude = {“id”,“name”})
- 如果继承的有父类的话,可以设置callSuper 让其调用父类的toString()方法,例如:@ToString(callSuper = true)
- 如果需要可以通过注释参数includeFieldNames来控制输出中是否包含的属性名称。,例如:@ToString(includeFieldNames= false)
@ToString
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
3. @Data
@Data 是一个综合性注解,包含了 @Getter、@Setter、@ToString、@EqualsAndHashCode 以及 @RequiredArgsConstructor 等功能,适用于需要快速生成完整 Java Bean 的情况。
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
4. @NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor
- @NoArgsConstructor:生成无参构造函数。
当类中有final字段没有被初始化时,编译器会报错,此时可用@NoArgsConstructor(force = true),然后就会为没有初始化的final字段设置默认值 0 / false / null。对于具有约束的字段(例如@NonNull字段),不会生成检查或分配,因此请注意,正确初始化这些字段之前,这些约束无效。
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
- @AllArgsConstructor:生成包含所有字段的构造函数,默认不提供无参构造。
@AllArgsConstructor
public class User {
private Long id;
private String name;
private final Integer age;
private String email;
}
- @RequiredArgsConstructor:生成构造方法(可能带参数也可能不带参数),如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段
@RequiredArgsConstructor
public class User {
@NonNull
private Long id;
private String name;
private Integer age;
private String email;
}
以上就是lombok常用注解的基本使用。