zoukankan      html  css  js  c++  java
  • @Builder

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

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

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

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

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

      

      

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

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

  • 相关阅读:
    POJ1094(Topological Sort)
    POJ1258(Minimum Spanning Tree,Prim)
    POJ2509(Water,Greedy)
    POJ1258(Minimum Spanning Tree,Kruskal)
    POJ1256(permutation)
    POJ2790(BFS)
    HDU 1527 取石子游戏
    POJ Mayor's posters
    HDU 1907 John
    HDU 2516 取石子游戏
  • 原文地址:https://www.cnblogs.com/BOGY/p/14266682.html
Copyright © 2011-2022 走看看