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);
      }
    }
    }
  • 相关阅读:
    博客园风格简单修饰(Do It Yourself)
    十大经典排序算法
    物流BOS
    算法设计
    牛客网刷题
    关于上网的问题
    Lucene&Solr
    SSM综合练习
    四十八:WAF绕过-权限控制之代码混淆及行为造轮子
    四十七:WAF绕过-漏洞发现之代理池指纹被动探针
  • 原文地址:https://www.cnblogs.com/deepminer/p/12589542.html
Copyright © 2011-2022 走看看