首页 > 其他分享 >Lombok @Builder 是如何实现的

Lombok @Builder 是如何实现的

时间:2023-05-01 09:55:05浏览次数:47  
标签:name UserFacts age public 如何 UserFactsBuilder Lombok Builder

转:lombok @Builder 是如何实现的

定义 Builder 接口,用于 build 对象:

public interface Builder<T> {
    T build();
}

定义 bean:

import lombok.Getter

@Getter
public class UserFacts {

    private String name;

    private Integer age;

    public static UserFactsBuilder builder() {
        return new UserFactsBuilder();
    }

    public static class UserFactsBuilder implements Builder<UserFacts> {

        private String name;

        /**
         * 可设置默认值
         */
        private Integer age = 18;

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

        public UserFactsBuilder age(Integer age) {
            this.age = age;
            return this;
        }

        @Override
        public UserFacts build() {
            return new UserFacts(this);
        }
    }

    private UserFacts(UserFactsBuilder builder) {
        this.name = builder.name;
        this.age = builder.age;
    }
}

测试:

public static void main(String[] args) {
    UserFacts userFacts = UserFacts.builder()
            .name("https")
            .age(18)
            .build();
    System.out.println(userFacts.getName());
}

标签:name,UserFacts,age,public,如何,UserFactsBuilder,Lombok,Builder
From: https://www.cnblogs.com/Higurashi-kagome/p/17366198.html

相关文章

  • 如何通过 API 查看 cnblogs 博客访问量和博客积分与排名 All In One
    如何通过API查看cnblogs博客访问量和博客排名AllInOne开启配置https://i.cnblogs.com/preference博客访问量APIhttps://www.cnblogs.com/`username`/ajax/blogStats博客排名APIhttps://www.cnblogs.com/`username`/ajax/sidecolumn.aspxdemos博客访问量......
  • 【愚公系列】用友系列之YonBuilder低代码平台概论和基本使用
    (文章目录)一、引言1.代码平台的概念和发展历程低代码平台是一种通过可视化界面和模板化组件快速创建应用程序的平台,其发展历程主要经历了三个阶段:第一个阶段是第一代低代码平台:其主要关注业务流程管理及应用程序的速度开发,但其可扩展性和可定制性较低。第二个阶段是第二代......
  • 如何给正在运行的docker容器添加端口映射
    我们都知道启动docker容器的时候可以使用-d参数进行端口映射,但是如果你的容器已经创建出来了但是突然又想要添加一个端口映射,这时总不能重新创建一个容器吧,之前的工作不都白费了吗有一个办法就是先将当前已经配置过的容器打包成新的镜像,然后用这个镜像生成一个新的容器,这样所做的......
  • 如何卸载,禁用和删除Windows Defender
    彻底卸载:把如下代码复制到文本中,后缀命名为cmd,右键,使用管理员方式打开,否则会报错需要下载install_wim_tweak.exe这个软件,后面的压缩包有。cd/d"%~dp0"echoUninstalling...CLSinstall_wim_tweak.exe/o/linstall_wim_tweak.exe/o/c"Windows-Defender"/rinstall......
  • 如何修改linux中HTTP默认目录
    在Linux中,HTTP服务器的默认目录通常是/var/www/html。要修改它,可以按照以下步骤进行操作:打开Apache配置文件httpd.conf。该文件通常位于/etc/httpd/conf/或/etc/apache2/目录下。找到DocumentRoot指令,并将其值更改为您想要的目录路径。例如,如果您想将默认目录更改为/home/user/......
  • 如何在存储过程中执行ddl语句
    如何在存储过程中执行ddl语可用;EXECUTEIMMEDIATE'CREATETABLEbonus(idNUMBER,amtNUMBER)';不过好象在存储过程中创建一个临时表不大好.句========================================================dbms_utility.exec_ddl_statement(p_sql);......
  • 如何在Linux服务器上部署Vue项目
    1.在本地将Vue项目打包以项目运行在vscode为例,在调试窗口输入 npmrunbuild待命令执行完毕之后,在项目目录下会生成dist文件夹,如下图 2.创建一个运行文件,名字是:server.js server.js中的内容如下:constexpress=require('express');constapp=express();app.use(expr......
  • Android HAL 是如何被调用的
    Android对硬件的调用,google推荐使用HAL的方式进行调用,对于AndriodHAL的写法,可以参考android源码里的hardware目录下几个模块的模版。在看HAL的编写方法的过程中,会发现整个模块貌似没有一个入口。一般说来模块都要有个入口,比如应用程序有main函数,可以为加载器进行加......
  • 《asyncio 系列》4. 如何并发运行多个任务(asyncio.gather、asyncio.as_completed、asy
    楔子在上一篇文章中,我们了解了套接字的内部工作原理,并构建了一个基本的回显服务器。现在我们将学到的知识应用到并发的、非阻塞的Web请求中,基于asyncio可以并发发送大量的Web请求,缩短应用程序的运行时间。当我们必须向一组RESTAPI发出多个请求时,这很有用,比如在微服务架......
  • 高分屏电脑开发的winforms软件如何确保在低分屏显示正常
    高分屏电脑开发的winforms软件,如何确保在低分屏显示正常.其实有两种做法.将软件做成dpiAware,这个做法需要考虑非常多的情况,窗体大小/布局/控件大小/字体大小,做的完美开发成本很高.优点是,系统如果部署在比开发机更高DPI的机器上,显示效果依然很好.不启用dpiAware......