聊聊Lombok中的@Builder注解使用教程

目录
  • Lombok中的@Builder注解的使用
    • 作用
    • 引入依赖
    • 第二步给实体类加上@Builder注解
    • 第三步使用测试使用@Builder注解生成对象
    • 实体类加上@Builder注解之后的编译结果

Lombok中的@Builder注解的使用

作用

@Builder注解的作用主要是用来生成对象,并且可以为对象链式赋值。

引入依赖

因为@Builder注解是lombok中的东西,所以第一步我们需要引入lombok的依赖,如下图:

第二步给实体类加上@Builder注解

第二步我们需要给我们的实体类加上一个@Builder注解,如下图:

第三步使用测试使用@Builder注解生成对象

实体类加上@Builder注解之后的编译结果

实体类加上@Builder注解之后,编译之后会多出一个builder()方法,和一个CardBuilder静态内部类,如下图:

代码如下:

public class Card {
    private int id;
    private String name;
    private boolean sex;

    public static Card.CardBuilder builder() {
        return new Card.CardBuilder();
    }

    public Card(int id, String name, boolean sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    public Card() {
    }

    public int getId() {
        return this.id;
    }

    public String getName() {
        return this.name;
    }

    public boolean isSex() {
        return this.sex;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSex(boolean sex) {
        this.sex = sex;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof Card)) {
            return false;
        } else {
            Card other = (Card)o;
            if (!other.canEqual(this)) {
                return false;
            } else if (this.getId() != other.getId()) {
                return false;
            } else {
                Object this$name = this.getName();
                Object other$name = other.getName();
                if (this$name == null) {
                    if (other$name == null) {
                        return this.isSex() == other.isSex();
                    }
                } else if (this$name.equals(other$name)) {
                    return this.isSex() == other.isSex();
                }

                return false;
            }
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof Card;
    }

    public int hashCode() {
        int PRIME = true;
        int result = 1;
        int result = result * 59 + this.getId();
        Object $name = this.getName();
        result = result * 59 + ($name == null ? 43 : $name.hashCode());
        result = result * 59 + (this.isSex() ? 79 : 97);
        return result;
    }

    public String toString() {
        return "Card(id=" + this.getId() + ", name=" + this.getName() + ", sex=" + this.isSex() + ")";
    }

    public static class CardBuilder {
        private int id;
        private String name;
        private boolean sex;

        CardBuilder() {
        }

        public Card.CardBuilder id(int id) {
            this.id = id;
            return this;
        }

        public Card.CardBuilder name(String name) {
            this.name = name;
            return this;
        }

        public Card.CardBuilder sex(boolean sex) {
            this.sex = sex;
            return this;
        }

        public Card build() {
            return new Card(this.id, this.name, this.sex);
        }

        public String toString() {
            return "Card.CardBuilder(id=" + this.id + ", name=" + this.name + ", sex=" + this.sex + ")";
        }
    }
}

到此这篇关于Lombok中的@Builder注解的使用的文章就介绍到这了,更多相关Lombok @Builder注解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java Lombok简介、使用、工作原理、优缺点

    简介 官方介绍 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 lo

  • 关于idea2020.3升级lombok不能使用的问题

    下面看下关于idea2020.3升级lombok不能使用的问题 因为lombok插件暂时没有更新到 2020.3版本,在pom文件中指定lombok版本为最新版本 ps:idea2020版本的lombok不能使用 在的Idea2020版本出现之后,发现了一个问题,在历史插件没有更新的情况下咱们更新了idea,就会导致插件更新没有及时跟上而导致失效. 解决办法: 官网插件地址:https://plugins.jetbrains.com/plugin/6317-lombok/ 进入官网插件地址进行下

  • Java中lombok的@Builder注解的解析与简单使用详解

    Lombok中@Builder用法 1.建造者模式简介:Builder 使用创建者模式又叫建造者模式.简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节,但却可以精细地控制对象的构造过程. 2.注解类Builder.java注释: * The builder annotation creates a so-called 'builder' aspect to the class that is annotated or the class  * that contains a mem

  • 聊聊Lombok中的@Builder注解使用教程

    目录 Lombok中的@Builder注解的使用 作用 引入依赖 第二步给实体类加上@Builder注解 第三步使用测试使用@Builder注解生成对象 实体类加上@Builder注解之后的编译结果 Lombok中的@Builder注解的使用 作用 @Builder注解的作用主要是用来生成对象,并且可以为对象链式赋值. 引入依赖 因为@Builder注解是lombok中的东西,所以第一步我们需要引入lombok的依赖,如下图: 第二步给实体类加上@Builder注解 第二步我们需要给我们的实体类

  • spring中的特殊注解@RequiredArgsConstructor详解

    目录 1.注解注入: 2.构造器注入: 3.setter注入: Lombok在spring中的特殊注解@RequiredArgsConstructor 在了解lombok中的特殊注解之前:了解一下spring的常用注入方式戳这里 1.注解注入: Controller public class FooController { @Autowired //@Inject private FooService fooService; //简单的使用例子,下同 public List<Foo> list

  • 使用Lombok @Builder注解导致默认值无效的问题

    目录 @Builder注解导致默认值无效 原因分析 lombok@Builder忽略属性默认值的坑点 1. 简单使用 2. 默认值问题 3. 修改属性值 @Builder注解导致默认值无效 使用Lombok注解可以极高的简化代码量,比较好用的注解除了@Data之外,还有@Builder这个注解,它可以让你很方便的使用builder模式构建对象,但是今天发现@Builder注解会把对象的默认值清掉. 像下面这段代码,会导致对象的name属性变为null: public class BuilderT

  • 使用Lombok的@Builder注解带来的两大坑

    目录 一.@Data和@Builder导致无参构造丢失 二.@Builder注解导致默认值无效 三.分析原因 四.总结 一.@Data和@Builder导致无参构造丢失 单独使用@Data注解,是会生成无参数构造方法. 单独使用@Builder注解,发现生成了全属性的构造方法. @Data和@Builder一起用:我们发现没有了默认的构造方法.如果手动添加无参数构造方法或者用@NoArgsConstructor注解都会报错! 两种解决方法 1.构造方法加上@Tolerate 注解,让lombok

  • SpringMVC 中配置 Swagger 插件的教程(分享)

    一.简介 Swagger的目标是为REST API定义一个与语言无关的标准接口,允许用户发现和理解计算机服务的功能,而无需访问源代码.当通过Swagger正确定义时,用户可以用最少量的实现逻辑理解远程服务并与之交互.类似于低级编程所做的接口. 二.实现步骤 1.添加 Maven 依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifact

  • 浅谈SpringBoot中的@Conditional注解的使用

    概述 Spring boot 中的 @Conditional 注解是一个不太常用到的注解,但确实非常的有用,我们知道 Spring Boot 是根据配置文件中的内容,决定是否创建 bean,以及如何创建 bean 到 Spring 容器中,而 Spring boot 自动化配置的核心控制,就是 @Conditional 注解. @Conditional 注解是 Spring 4.0 之后出的一个注解,与其搭配的一个接口是 Condition,@Conditional 注解会根据具体的条件决定是否

  • java中反射和注解的简单使用方法

    目录 什么反射? Java反射机制提供的功能 反射相关的主要API Class 类 获取Class 类的实例( 四种方法) 哪些类型可以有Class 对象? 演示Class类的常用方法 有了Class对象,能做什么? 调用运行时类的指定结构 1. 调用指定方法 关于setAccessible 调用Class对象的newInstance()方法 综合案例: 注解 什么是注解? 常见的Annotation JDK 中的元注解 自定义 Annotation 最后通过反射获取注解信息: 总结 什么反射?

  • 聊聊Kotlin 中 lateinit 和 lazy 的原理区别

    目录 lateinit 用法 原理 lazy 用法 原理 the end references 使用 Kotlin 进行开发,对于 latelinit 和 lazy 肯定不陌生.但其原理上的区别,可能鲜少了解过,借着本篇文章普及下这方面的知识. lateinit 用法 非空类型可以使用 lateinit 关键字达到延迟初始化. class InitTest() { lateinit var name: String ​ public fun checkName(): Boolean = name

  • 最新MySql8.27主从复制及SpringBoot项目中的读写分离实战教程

    目录 最新MySql8.27主从复制以及SpringBoot项目中的读写分离实战 1.MySql主从复制 2.配置-主库Master 3.配置-从库Slave 3.主从复制测试 4.读写分离案例 4.1.Sharding-JDBC框架介绍 最新MySql8.27主从复制以及SpringBoot项目中的读写分离实战 1.MySql主从复制 MySQL主从复制是一个异步的复制过程,底层是基于MySQL1数据库自带的二进制日志功能.就是一台或多台MySQL数据库(slave,即从库)从另一台ySQL数

随机推荐