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建造者模式,自动创建内部类建造者和静态实例化建造者的工厂方法。

使用示例1

 @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>

  1. 摘自lombok的javadoc
最后修改:2020 年 04 月 07 日
如果觉得我的文章对你有用,请随意赞赏