lombok 可能大家都用过,有一个 @Builder 注解可以很方便的在对象初始化的时候填充属性值,不用大量的调用 setter 方法,代码更易于阅读与编写。不知道大家有没有想过 @Builder 注解内部是怎么实现的,前些天看 《Effective Java》 的时候刚好看到有一个例子,其实很简单,这里以一个例子分享下代码实现。

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

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

定义 bean:

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 = 0;public UserFactsBuilder name(String name) {this.name = name;return this;}public UserFactsBuilder age(Integer age) {this.age = age;return this;}@Overridepublic 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("zchen").age(18).build();System.out.println(userFacts.name);}

这种 build 模式的代码显得很简洁,你需要哪个参数直接 build 即可,比构造器要方便的多。这里只是简单地分享一下,业务代码写久了,没事了解些其他比较好的代码格式或者业务架构模型还是挺有意思的的。

lombok @Builder 是如何实现的相关推荐

  1. 如何给Lombok Builder提供默认值

    来源:生活点亮技术 1.概览 在这个教程中,我们将研究如何基于Lombok在实现 Builder模式时为属性提供默认值. 请务必阅读这篇Lombok简介 . 2.Maven依赖 在本教程中,我们将使用 ...

  2. lombok @Builder注解的使用

    @Builder ......鲍勃是你的叔叔:用于创建对象的无懈可击的花式裤子! @Builder 在lombok v0.12.0中作为实验特征介绍. @Builder获得了@Singular支持,并 ...

  3. Lombok Builder模式创建对象

    Lombok Builder模式创建对象 1.传统创建对象 ResponseResultVO vo = new ResponseResultVO();vo.setCode(1);vo.setData( ...

  4. Java中lombok @Builder注解使用详解

    简介 Lombok大家都知道,在使用POJO过程中,它给我们带来了很多便利,省下大量写get.set方法.构造器.equal.toString方法的时间.除此之外,通过@Builder注解,lombo ...

  5. Lombok@Builder和@NoArgsConstructor冲突

    问题 今天在使用lombok简化model类时.使用@Builder建造者模式.报以下异常 解决办法. 去掉@NoArgsConstructor 添加@AllArgsConstructor 源码分析 ...

  6. 构建器builder模式 + lombok @Builder的介绍及使用

    参考 https://juejin.im/post/6844903862600466439 注意⚠️: 带有@Builder的类,如果加了@NoArgsConstructor,那么也必须加@AllAr ...

  7. 【Lombok】@Builder | 提供 Builder 形式轻松实现对象创建

    文章目录 一.简介 @Builder.Default @Singular Jackson 二.示例比较 1. Lombok 写法 2. Java 标准写法 三.支持的配置项 四.附属说明 参考文献 一 ...

  8. 关于lombok中的Builder注解解析

    文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼:我热爱编程.热爱算法.热爱开源.所有源码在我的个人github :这博客是记录我学习的点点滴滴,如果您对 Python.Java.AI ...

  9. java8中使用lombok插件中的@Builder方法创建对象

    @Builder在实体类上使用时: ①如果实体类中存在构造函数方法,那么必须同时加上注解@AllArgsConstructor(自动生成全部参数的构造方法),@NoArgsConstructor加不加 ...

最新文章

  1. 堆晶结构_橄榄岩的特殊问题
  2. IE6 IE7 IE8(Q) 不支持 JSON 对象
  3. 2ASK和2FSK相干解调误码率仿真matlab
  4. linux并发服务器实例,linux-----网络编程----epoll实现并发服务器
  5. 非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
  6. pytorch自定义卷积核权值参数
  7. python内存地址替换原理(20秒读懂)
  8. 【简单粗暴】如何给网页嵌入视频
  9. 如果SQL Server 配置管理器没有找到就代表安装失败?
  10. 简单分享apache封IP的方法
  11. 阿里云贾扬清发布大数据+AI产品体系“阿里灵杰” | 云栖大会
  12. 人事、财务常用EXCEL基础函数应用示例总结
  13. 卷积神经网络完整总结
  14. 蓝牙网络共享linux,在Linux系统上安装Blueman以通过蓝牙共享文件
  15. IAR,STVD和STVP的使用
  16. E1--千兆以太网接口测试应用2022-09-07
  17. 交换机和集线器的区别
  18. 获取pc微信信息_如何获取有关您的PC的详细信息
  19. rx6600怎么样 rx6600显卡相当于什么n卡
  20. KubeSphere安装redis集群,全程超带劲

热门文章

  1. 【static关键字的作用是什么?它用在什么场景?static关键字深度解析来袭】
  2. CentOS 8安装JFrog Artifactory社区版解决方案
  3. Spring Security + Session Redis——JSON序列化错误[The class xxx and name of xxx is not whitelisted. ]解决方案
  4. 汇编语言——16位寄存器实现32位二进制数左移4位。
  5. Maxim and Biology
  6. 【问题记录】pytorch自定义数据集 No such file or directory, invalid index of a 0-dim
  7. oracle一条语句递归查询父子关系
  8. Android复习09【内容提供者、音乐播放器(附完整工程文件)】
  9. 数据库设计(概念、步骤)
  10. Android 开发实用小技巧