@Builder


  一般在构造一个javaBean对象时,有三种写法:

  1、直接通过构造函数传参的方式设置属性,但属性过多的话会让构造函数十分臃肿,而且不能灵活的选择只设置某些参数。

  2、采用重叠构造器模式,先写第一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个构造器有两个可选参数,以此类推;如果参数比较多时,类里面会出现一堆构造方法,容易出错。

  3、采用Javabean的写法,写一堆属性的setter方法,通过调用setter方法给属性赋值。  这种方法有个劣势就是构造的过程被分到几个调用中,在构造中可能处于不一致状态,无法保证一致性。

  而Lombok 插件中的@Builer,可以放在类、构造函数或方法上,它可以帮我们快速实现一个builder模式,builder模式既解决了重叠构造器容易出错,也解决了Javabean的不一致问题,例子如下:

  

  

  但当实体对象有继承关系的时候,再使用Builder注解就会发现,在子类中无法通过builder方法构造父类中的成员变量。Builder注解只管承接注解的这个类,而不会管他的父类或者子类。这个问题在lombokv1.18.2 版本之前其实很难办,但是在这个版本官方引入了一个新的注解@SuperBuilder,无法build父类的问题迎刃而解.

  查阅官方文档发现,若想使用build方法,只需要在子类和父类上都加@SuperBuilder。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM