1.@SuperBuilder表示表示能正常获取父类的属性,方法,来进行构造
注意:父类与子类都加上这个注解才能用build模式
public class Person { private Integer age; private String name; } @Builder public class zhang extends Person{ } //报错,无法获取父类属性进行构造
@SuperBuilder public class Person { private Integer age; private String name; } @SuperBuilder public class zhang extends Person{ } //正确,能获取父类属性构造
2.@SuperBuilder(toBuilder = true),表示在原来对象实例基础上构造新实例
Zhang zhang = zhang.builder() .age(11) .name("张三") .build(); Zhang zhang1 = zhang.toBuilder().name("张").build(); //zhang1的name是张,age为11
对于nama属性重新赋值覆盖原来值,age没赋值采用原来的zhang的值11
3.注意
使用@Builder或@SuperBuilder注解时,不会默认创建空参构造函数,如果你有额外使用空参构造函数或全参构造函数的需求,需要在子类和父类都加上以下注解:
@AllArgsConstructor //全参构造函数
@NoArgsConstructor //空参构造函数