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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM