Lombok

Lombok介绍

Lombok 项目其实就是一个 java 库,它可以自动插入到编辑器和构建工具中,增强 java 的性能。以后你 只需要一些简单的注解,就可以再也不用在类中反复去写 getter、equals 等方法,让代码变得简介,不用过多地去关注相应的方法。属性修改时,也简化了维护这些属性所生成的 get、set 方法。

使用方式:

  1. IDEA 下载 Lombok 插件

  2. 项目中导入 Lombok 的 jar 包

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
</dependency>
  1. 实体类 上使用 Lombok 注解

Lombok 注解

  • @Data

    自动创建无参构造函数、get、set、toString、hashcode、equals 方法

  • @AllArgsConstructor

    自动创建所有参数的构造函数。可以通过access属性指定访问级别:

    @AllArgsConstructor(access = AccessLevel.PRIVATE)
  • @NoArgsConstructor

    自动创建无参构造函数,可以通过access属性指定访问级别。

  • @EqualsAndHashCode

    可以通过of属性指定参与equalshashcode的字段:

    @EqualsAndHashCode(of = {"name", "sex"}
  • @ToString

  • @Getter/@Setter

  • @Singular

    在集合属性上使用该注解,可以往集合中单独增加元素。

  • @Builder

    可以类似于链式地调用对象进行赋值。

    @Data
    @Builder
    @Slf4j
    class Student {
        private String name;
        private int age;
        private int score;
    
        @Singular("addHobby")
        private List<String> hobby;
    
        public static void main(String[] args) {
            Student stu = Student.builder().name("HELLO").age(8).addHobby("read").addHobby("dance").build();
            log.info("stu: {}", stu);
        }
    }
  • @SneakyThrows

    异常处理。

  • @Accessors

    可以通过chain属性,对属性进行链式操作

    @Data
    @Slf4j
    @Accessors(chain = true)
    class Student {
        private String name;
        private int age;
        
        public static void main(String[] args) {
            Student stu = new Student();
            stu.setName("老王").setAge(10);
            log.info("stu: {}", stu);
        }
    }
  • @FieldNameConstants

    提供字符串形式的类的属性名的常量。使用方式是Fields.

    @Data
    @Builder
    @Slf4j
    @FieldNameConstants
    class Student {
        private String name;
        private int age;
    
        public static void main(String[] args) {
            
            log.info(Fields.age);
        }
    }