zoukankan      html  css  js  c++  java
  • lombok使用

    Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。

    它所有的增强都是通过注解实现,所以了解其使用主要了解一下注解即可。更全的注解文章见  lombok的使用详解

    一、maven配置

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

      

    二、@Data

    @Data 强悍的组合功能包

    相当于注解集合。效果等同于@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor。

    import lombok.Builder;
    import lombok.Data;
    import lombok.experimental.Tolerate;
    
    @Data
    public class Student {
        private String name;
        private int age;
    
        @Tolerate
        public Student() {} 
    }
    public Class Demo {
        
        @Test
        public void testLombok() {
            Student student = new Student();
            student.setName("stu");
            logger.info(student.toString());
        }
    
    }

    三、@Builder

    lombok中的@Builder支持构造者模式。@Builder提供了一种比较推崇的构建值对象的方式,非常推荐的一种构建值对象的方式。缺点就是父类的属性不能产于builder。

    @Builder
    public class Demo {
        private final int finalVal = 10;
    
        private String name;
        private int age;
    }
    
    public static void main(String[] args) {
            Demo demo = Demo.builder().name("aa").age(10).build();
            System.out.println(demo); 
    }
    

      使用@Builder后,就没有了无参构造函数。若需要,可以自己写构造函数。比如

    @Builder
    public class Demo {
        private final int finalVal = 10;
    
        private String name;
        private int age;
    
        public Demo() {}
    
        public Demo(String name, int age) {
            this.name = name;
            this.age = age;
        }    
    } 

        或者使用@NoArgsConstructor 和 @AllArgsConstructor

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public class Demo {
        private final int finalVal = 10;
        private String name;
        private int age;
    }

      或者可以使用@Tolerate注解 

    @Builder
    public class Demo {
        private final int finalVal = 10;
    
        private String name;
        private int age;
    
        @Tolerate
        public Demo() {}  
    }
  • 相关阅读:
    flashplayer关闭休眠模式
    大道至简,职场上做人做事做管理[转一下]
    flash程序员对python中while True的理解
    github搭建个人主页
    flash素材在as程序中使用的几种方法
    python中解析xml文档转化成字符串的方法
    查看修改mysql编码方式
    FusionCharts
    extJSjson字符串和json对象
    我的收藏
  • 原文地址:https://www.cnblogs.com/sunada2005/p/15150684.html
Copyright © 2011-2022 走看看