@Builder

之前没用过@Builder注解,稍微学习了一下,发现这个注解就是方便new对象的。

我以前在实体类上都是加@AllArgsConstructor、@NoArgsConstructor两个注解来new对象。
但是如果遇到A(a,b,c,d,e,f,g)实体只需要创建A(a,b,c)的对象的情况,就只能再生成一个“死的”构造方法:

    public A(String a, String b, String c) {this.a = a;this.b = b;this.c = c;}

那@Builder注解就是为了减少这种“傻瓜”操作

没用@Builder之前我都是这么创建对象:


用@Builder:



两种方法创建出来的对象是一样的,没有赋值的属性就是空的,但是明显@Builder更方便

structure里可以看到是写了个内部类,具体的方法怎么写的网上可以搜得到
这里有个看得到编译后的代码的:https://www.jianshu.com/p/5e42ecede166

@Singular

实际应用中一般会遇到实体类中包含list、map、set等集合的情况,这种又是怎么处理的?

那么我们可以以下方式来创建对象:

但是多多少少还是有点呆,那就有@Singular来搭配使用:

那么我们就可以这么来创建对象:

        Person p5 = Person.builder().name("hy").sex("女").childrenInfo("yzx").childrenInfo("yzy").build();System.out.println(p5);

@Singular使用中需要注意的

  • 构造集合的方法名

上面的图如果仔细地话会发现明明我的属性名是childrenInfos,但是structure中的方法名是childrenInfo

是因为**@Singular注解添加的额外方法使用的是集合名的单数形式**
例如childrenInfos会生成childrenInfo;glasses会生成glass;children会生成child
但是有时候属性名不规范或者无法识别时,@Singular就不知道生成啥样的,这个时候编译就报错,提示你:

Can’t singularize this name: “ssss”; please specify the singular explicitly (i.e. @Singular(“sheep”))

解决方法:
在@Singular注解后面加上你要的方法名就可以了

  • 对于map、set
    对于map集合,键重复时,取后put的键值对
    对于set集合,重复添加同一元素不会报错,但是只会有一个

参考:
https://www.baeldung.com/lombok-builder-singular

lombok中的@Builder、@Singular注解相关推荐

  1. lombok中的builder注解居然是一种设计模式:让我们了解一下超级实用的“建造者模式”吧

    lombok中的builder注解本质上是为你生成了一个构造器Builder类,通过这个类我们可以构造出带此注解的对象.本质上它实现了设计模式中一种经典的模式:建造者模式 1.认识: ①一句话来说:封 ...

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

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

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

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

  4. lombok 下的@Builder注解用法

    转载:https://blog.csdn.net/qq_35568099/article/details/80438538 pom依赖 <dependency><groupId> ...

  5. lombok 中的@Data注解

    今天看到有代码中的Dao包中的类文件,写的极其简洁,甚至引起了开发工具InteliJ的报错,然后程序还能稳健地跑起来. 1 2 3 4 5 6 7 8 9 import lombok.Data; @D ...

  6. 解决lombok中注解@Slf4j的log对象报红找不到的问题

    问题: SpringBoot项目添加了lombok依赖,依然无法使用注解@Slf4j中的log对象 解决办法:该依赖需要搭配插件使用,IDEA工具的操作方法是: File --> Setting ...

  7. Lombok的使用和常用注解使用示例

    PS→无奈:生命之灯因热情而点燃,生命之舟因拼搏而前行. Lombok介绍 Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单 ...

  8. Lombok中关于@Data的使用

    当你在使用 Lombok 的 @Data 注解时,其实会有一些坑需要关注,今天就让我们来见识一下. <!-- more --> Lombok 先来简单介绍一下 Lombok ,其官方介绍如 ...

  9. Lombok报: @Builder 实际参数列表和形式参数列表长度不同

    错误信息 E:\workspace\tvbox\pxwxm-model\pxwxm-tvbox-model\src\main\java\com\puxinwangxiao\mobile\model\t ...

最新文章

  1. linux cuda 如何编译器,linux – Cuda编译器不使用GCC 4.5
  2. 重磅!苹果祭出大招:史上最强 Mac 发布,iPad OS 惊艳问世
  3. 关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。...
  4. Nginx和uWSGI和Flask的关系
  5. ha linux 设置虚拟ip_如何在虚拟机中设置CentOS静态IP?
  6. linux运维实战练习-2015年8月30日课程作业(练习)安排
  7. 不确定度用计算机怎么算,算A类不确定度用计算器该怎样按
  8. 教你webm格式怎么转换成mp4
  9. Matlab心电信号QRS波检测
  10. LuatOS之LVGL字体篇
  11. 计算机应用能力考试ppt,全国专业技术人员计算机应用能力考试 PPT 2003 题库版...
  12. Monotonic Matrix(lemma定理)
  13. java mat类型_JVM MAT使用分析详解
  14. Blender 利用遮罩剔除顶点
  15. python Matplotlib中时间刻度标签的设置/主副刻度
  16. 计算机公式与函数试题,计算机国考样题EXCEL之公式与函数的应用一
  17. Field myFeignClient in com.zkh.controller.FeignController required a bean of type 'com.zkh.feign.MyF
  18. Django开发个人博客网站——19、通过Django Haystack实现搜索功能(上)
  19. 无线攻击之Aircrack-ng破解无线密码(无线密码破解套件)
  20. 《应用回归分析》pdf

热门文章

  1. 网易严选应用的云原生演进实践
  2. 将MindManager添加到鼠标右键新建项
  3. 阿里云ECS服务器搭建Mysql数据库
  4. 下雨天,走一段路,是走淋雨少还是跑
  5. 情感分类——Attention(前篇续)
  6. PlaySound函数以及sndPlaySound函数用法总结
  7. Thinkphp 6.0请求对象和信息
  8. web生成pdf后的直接打印,隐藏iframe
  9. CentOS 7中yum安装java
  10. 2018年总结:他的一年