zoukankan      html  css  js  c++  java
  • Lombok

    Lombok

    一、Lombok介绍

    Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量

    二、安装

    三、Maven

    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
    </dependency>

    四、常用注解

    下面介绍一下常用的几个注解:

    • @Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。

    • @Getter 使用方法同上,区别在于生成的是getter方法。

    • @ToString 注解在类,添加toString方法。

    • @EqualsAndHashCode 注解在类,生成hashCode和equals方法。

    • @NoArgsConstructor 注解在类,生成无参的构造方法。

    • @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。

    • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。

    • @Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

    • @Slf4j 注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);

    (1)@Data

    @Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法

    import lombok.AccessLevel;
    import lombok.Setter;
    import lombok.Data;
    import lombok.ToString;

    @Data public class DataExample {
     private final String name;
     //包访问级别
     @Setter(AccessLevel.PACKAGE) private int age;
     private double score;
     private String[] tags;
     
     @ToString(includeFieldNames=true)
     @Data(staticConstructor="of")
     public static class Exercise<T> {
       private final String name;
       private final T value;
    }
    }
    (2)@Getter/@Setter

    如果觉得@Data太过残暴(因为@Data集合了@ToString、@EqualsAndHashCode、@Getter/@Setter、@RequiredArgsConstructor的所有特性)不够精细,可以使用@Getter/@Setter注解,此注解在属性上,可以为相应的属性自动生成Getter/Setter方法。


    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;

    public class GetterSetterExample {

     @Getter @Setter private int age = 10;
     
     @Setter(AccessLevel.PROTECTED) private String name;
     
     @Override public String toString() {
       return String.format("%s (age: %d)", name, age);
    }
    }
    (3)@NonNull

    该注解用在属性或构造器上,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。


    import lombok.NonNull;

    public class NonNullExample extends Something {
     private String name;
     
     public NonNullExample(@NonNull Person person) {
       super("Hello");
       this.name = person.getName();
    }
    }
    (4)Cleanup

    该注解能帮助我们自动调用close()方法,很大的简化了代码。


    import lombok.Cleanup;
    import java.io.*;

    public class CleanupExample {
     public static void main(String[] args) throws IOException {
       @Cleanup InputStream in = new FileInputStream(args[0]);
       @Cleanup OutputStream out = new FileOutputStream(args[1]);
       byte[] b = new byte[10000];
       while (true) {
         int r = in.read(b);
         if (r == -1) break;
         out.write(b, 0, r);
      }
    }
    }
  • 相关阅读:
    谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!
    23种设计模式大全(适合新手阅读)
    职责链模式-设计模式系列
    策略模式-设计模式系列
    状态模式-设计模式系列
    解释器模式-设计模式系列
    备忘录模式
    中介者模式
    SQL-Server collation, what is it and how to change db/column collation
    [SimHash] the Hash-based Similarity Detection Algorithm
  • 原文地址:https://www.cnblogs.com/deepminer/p/12589542.html
Copyright © 2011-2022 走看看