Lombok
在写java代码时常常用到lombok 做一个简单记录
Lombok 能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString 方法。在源码中没有 getter/setter 方法,但是在编译生成的字节码文件中有 getter/setter 方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁。
举个例子
@Component
@RequiredArgsConstructor
public class ThankingService {
private final Translator translator;
public String produce() {
return translator.translate("thank you");
}
}
这么一段代码使用了注解@RequiredArgsConstructor (当然,需要先从lombok里import)
那么实际上这段代码是
@Component
public class ThankingService {
private final Translator translator;
public String thank() {
return translator.translate("thank you");
}
/* Generated by Lombok */
public ThankingService(Translator translator) {
this.translator = translator;
}
}
使用注解为类添加了一个构造函数
常用的注解如下:
- @Data
为该类的所有属性自动生成 setter/getter、equals、anEcqual、hashCode、toString 方法,如为 final 属性,则不会为该属性生成 setter 方法
- @Getter、@Setter
@Getter 和 @Setter 注解在属性上时,可以为相应的属性自动生成 Getter / Setter方法。
- @ToString
类使用 @ToString 注解,Lombok 会生成一个 toString() 方法,默认情况下,会输出类名、所有属性(按照属性定义顺序),用逗号来分割。
- @EqualsAndHashCode
默认情况下,会使用所有非静态(non-static)和非瞬态(non-transient)属性来生成 equals 和 hashCode 方法,也能通过 exclude 注解来排除一些属性。
callSuper参数用于包含父类的所有equal和hashCode方法 即
@EqualsAndHashCode(callSuper = true)
- @NonNull
该注解用在属性或构造器上,Lombok 会生成一个非空的声明,可用于校验参数,能帮助避免空指针。
- @Cleanup
该注解能帮助我们自动调用 close() 方法,很大的简化了代码。
- @NoArgsConstructor
自动生成无参构造器。
- @AllArgsConstructor
自动生成全参构造器,如果变量使用了 @NonNull, 会进行是否为空的校验。
如果要改方法修饰符 则可以写为 @AllArgsConstructor(access = AccessLevel.PROTECTED)
- @RequiredArgsConstructor
自动生成部分参数构造器。
RequiredArgsConstructor: 会生成一个包含常量,和标识了NotNull的变量 的构造方法。生成的构造方法是private,如何想要对外提供使用可以使用staticName选项生成一个static方法。