一、注解介绍
@Builder 注解为类生成相对略微复杂的构建器 API
- 它作用于类,将其变成建造者模式
- 可以以链的形式调用
- 初始化实例对象生成的对象是不可以变的,可以在创建对象的时候进行赋值
- 如果需要在原来的基础上修改可以加 set 方法,final 字段可以不需要初始化
- 它会生成一个全参的构造函数
@Builder 会生成一个全参构造方法,因此就没有了无参构造方法,但当我们遇到需要无参构造方法时就会发生问题,这个时候手写或者加上 @NoArgsConstructor 都会报错,两种解决方案
一、加上 @AllArgsConstructor
二、使用 @Tolerate 注解
二、@Builder 内部做了什么
- 创建一个名为 ThisClassBuilder 的内部静态类,并具有和实体类相同的属性(称为构建器)
- 在构建器中:对于目标类中的所有的属性和未初始化的 final 字段,都会在构建器中创建对应属性
- 在构建器中:创建一个无参的 default 构造函数
- 在构建器中:实体类中的每个参数,都会对应创建类似于 setter 的方法,方法名与该参数名相同。 并且返回值是构建器本身(便于链式调用)
- 在构建器中:会创建一个 build 方法,调用 build 方法,就会根据设置的值进行创建实体对象
- 在构建器中:会生成一个 toString 方法
- 在实体类中:会创建一个 builder 方法,它的目的是用来创建构建器
注意:本文归作者所有,未经作者允许,不得转载