@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