[英]How can Lombok's @Builder/@AllArgsConstructor invoke a custom constructor?
我有一個自定義的無參數構造函數,我想由Lombok生成的Builder調用它。 我認為這等同於擁有一個帶有所有參數的構造函數,而該參數首先要調用這樣的自定義無參數構造函數。
我會舉例說明
@Builder
@Data
public class BuilderExample extends Foo{
private String name;
private int age;
public BuilderExample(){
super.setSome(thing);
}
}
由BuilderExample.build()
創建的實例應設置super.setSome(thing);
到目前為止,我能找到的唯一方法是編寫all-args-constructor並使其調用no-args-one。 我認為這擊敗了使用Lombok的構造函數和構造函數的所有想法,就好像字段的數量大於一或兩個,all-args構造函數的編寫和維護變得乏味。
還有另一種方法可以做到這一點嗎?
您可以定義一個幾乎空的嵌套
class BuilderExampleBuilder {
public BuilderExample build() {
BuilderExample result = new ...all the stuff Lombok does
result.setSome(thing);
return result;
}
}
但這有一些問題:
調用result.setSome(thing)
不能使用super
關鍵字。 這可以通過提供類似的方法來解決
私人superSetSome(事物){super.setSome(事物); }
您也可以使用非靜態初始化程序塊,例如
{
super.setSome(thing);
}
這就是所有可以做的事,沒有很好的解決方案。 沒有鈎子允許將代碼注入到構造器或構造器中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.