Lombok常用的注解有:
- @Data :相当于@Setter + Getter + @ToString + @EqualsAndHashCode
- @Setter @Getter:作用于属性上,自动生成getter和setter方法
- @NonNull:判断是否为空,如果为空,则抛出java.lang.NullPointerException
- @Synchronized:作用在方法上,自动添加到同步机制,生成的代码并不是直接锁方法而是锁代码块
- @ToString:生成toString()方法,该注解有以下多个属性可以进一步设置:
- callSuper:是否输出父类的toString方法,默认为false
- includeFieldNames:是否包含字段名称,默认为true
- exclude:排除生成tostring的字段
- @EqualsAndHashCode
- @Cleanup:用于确保已分配的资源被释放,自动帮我们调用close()方法。比如IO的连接关闭。
- @SneakyThrows
- @NoArgsConstructor:自动生成无参数构造函数。
- @AllArgsConstructor:自动生成全参数构造函数。
- @Builder
- @SuperBuilder
@Getter/@Setter
为字段生成Getter和Setter方法,可以注解到字段或者类上
(注解在类上会为类中的所有字段生成Getter和Setter方法),
默认是public类型的,如果需要的话可以修改方法的访问级别。
public class Emp {
@Getter
private Integer empno;
@Getter(AccessLevel.PROTECTED)
private String ename;
@Setter(AccessLevel.PRIVATE)
private String job;
@Getter
@Setter
private Integer mgr;
private LocalDate hiredate;
}
@NonNull
生成setter方法时会参数是否为空检查
为字段赋值时(即调用字段的setter方法时),如果传的参数为null,则会抛出空异常NullPointerException
@Getter
@Setter
public class Emp {
@NonNull
private Integer empno;
private String ename;
}
@Data
@Data 包含了 @ToString、@EqualsAndHashCode、@Getter / @Setter和@RequiredArgsConstructor的功能
@Data
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private LocalDate hiredate;
}