由於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();