Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
以下内容除特别标注外,均为原创。涵盖 lombok main package 大部分用法。
Getter & Setter
注解 | 作用于字段 | 作用于类 |
---|
@Getter | 生成getter | 生成所有非静态字段的getter |
@Setter | 生成setter | 生成所有非静态字段的setter |
属性 | 作用 |
---|
value() | 设置的access flag,如public, protected, etc. |
Nonnull
注解 | 作用于字段 | 作用于形式参数 |
---|
@NonNull | 写这个字段的方法生成null-check | 传递这个参数的代码生成null-check |
Constructor
注解 | 作用于类 |
---|
@AllArgsConstructor | 根据所有字段生成构造函数 |
@RequiredArgsConstructor | 根据未赋初值字段生成构造函数 |
@NoArgsConstructor | 生成无参数构造函数 |
属性 | 作用 |
---|
access() | 设置的access flag,如public, protected, etc. |
staticName() | 使构造函数私有,并生成一个调用构造函数的工厂方法。 |
ToString & Equals & HashCode
注解 | 作用于类 |
---|
@ToString | 根据字段生成toString() |
@EqualsAndHashCode | 根据字段生成equals()和hashCode() |
属性 | 作用 |
---|
callSuper() | 是否调用超类属性 |
@Exclude | 将标记的字段排除 |
@Include | 将标准的字段包含,没用标记的字段将被排除 |
Var & Val
注解 | 作用于局部变量 |
---|
@val | 推断类型,并将局部变量标记为final |
@var | 推断类型,类似Java11添加的var关键字 |
Data & Value
注解 | 作用用于类 | 作用于方法 |
---|
@Data | 等价于 @Getter, @Setter, @ToString, @EqualsAndHashCode | - |
@Value | - | @Data类似 |
Builder
注解 | 作用于类 |
---|
@Builder | 建造者模式,自动创建内部类建造者和静态实例化建造者的工厂方法。 |
使用示例
@Builder
class Example<T> {
private T foo;
private final String bar;
}
class Example<T> {
private T foo;
private final String bar;
private Example(T foo, String bar) {
this.foo = foo;
this.bar = bar;
}
public static <T> ExampleBuilder<T> builder() {
return new ExampleBuilder<T>();
}
public static class ExampleBuilder<T> {
private T foo;
private String bar;
private ExampleBuilder() {}
public ExampleBuilder foo(T foo) {
this.foo = foo;
return this;
}
public ExampleBuilder bar(String bar) {
this.bar = bar;
return this;
}
@java.lang.Override public String toString() {
return "ExampleBuilder(foo = " + foo + ", bar = " + bar + ")";
}
public Example build() {
return new Example(foo, bar);
}
}
}
SneakyThrows
注解 | 作用于方法 |
---|
@SneakyThrows | 作用于方法,自动生成try catch语句块,若返回类型是基本类型,则返回默认值;若返回类型是引用类型,返回null。由于Java的限制,无法应用于lombda表达式。 |
pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>