关于 @Builder 和 @SuperBuilder

了解@SuperBuilder
@SuperBuilder解决了什么样的问题
将例子中的Ming这个类的成员属性放到父类当中:

public class Person {
    private Integer age;
    private String name;
}

@Builder
public class Ming extends Person{
}

这个时候,我们之前的调用的 .builder 都会报错,这是因为@Builder并不支持父类成员属性的构造,@SuperBuilder注解的出现,就是用来解决这个问题。

@SuperBuilder
public class Person {
    private Integer age;
    private String name;
}

@SuperBuilder
public class Ming extends Person{
}

这样子类就可以正常获取到父类的成员属性进行builder构造了。
@SuperBuilder(toBuilder = true)用法
toBuilder属性默认关闭,如果开启,则所有的父类应该也要开启,效果如下:

Ming mingD = Ming.builder()
      .age(11)
      .name("小明")
      .build();
Ming mingF = mingD.toBuilder().name("猪").build();
System.err.println(mingD.toString());
System.err.println(mingF.toString());

通过设置true,所有的类实例会拥有toBuilder方法
这是一个类似深拷贝的一个方法,不会改变原有实例的属性,生成一个新的实例。在toBuilder中有赋值的属性则会改变为赋值属性,没有赋值的以调用的实例中的值为准。
@SuperBuilder(buildMethodName = “execute”, builderMethodName = “helloWorld”, toBuilder = true) 用法
这个用法其实没什么意思,就是自定义方法名,不展开赘述。

 

posted @ 2023-05-12 10:27  郭慕荣  阅读(569)  评论(0编辑  收藏  举报