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 //空參構造函數