java Lombok下解決@Builder繼承解決方法(@SuperBuilder)


由於Lombok @Builder不適用於繼承用例:

 

class Foo{
 protected int xyz1;
 .....
 protected String xyz7;
}


class Bar extends Foo{

}

 

對於給定的用例,Lombok將無法生成方法來設置Foo類中定義的參數值。

解決方法是:

    • 手動創建Bar的構造函數。
    • 在該構造函數上放置一個Builder注釋。

Lombok引入了實驗性功能,其版​​本為:1.18.2,用於解決Builder注釋所面臨的繼承問題,並且可以使用@SuperBuilder注釋解決如下。

@SuperBuilder
public class ParentClass {
    private final String a;
    private final String b;
}

@SuperBuilder
public class ChildClass extends ParentClass{
    private final String c;
}

 

現在,可以使用如下所示的Builder類(使用@Builder注解是不可能的)

ChildClass.builder().a("testA").b("testB").c("testC").build();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM