@SuperBuilder

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 //空参构造函数

 

posted @ 2020-10-26 09:55  24601  阅读(2503)  评论(0)    收藏  举报