[英]Lombok @Builder inheritance for 3 Classes
這可能是一個初學者問題,但我很困惑。
我有 3 個類,如下所示。 在這種情況下如何使用 lombok 的 @Builder 注釋。
嘗試按照以下代碼執行時,Class C 出現錯誤。
如果父 class Class B 也有@Builder
注釋, Class C 會工作嗎?
我收到一個錯誤:- 錯誤:java:ClassC 中的 builder() 無法隱藏 ClassB 返回類型中的 builder() ClassCBuilder 與 ClassBBuilder 不兼容
Class C:
import lombok.Builder;
public class C extends B {
private String fieldC;
@Builder
public C(String fieldC, String fieldB, String fieldA) {
super(fieldB, String fieldA);
this.fieldC = fieldC;
}
}
Class B:
import lombok.Builder;
public class B extends A {
private String fieldB;
@Builder
public B(String fieldB, String fieldA) {
super(fieldA);
this.fieldB = fieldB;
}
}
Class A:
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public abstract class A {
private String fieldA;
}
@Builder
應該添加到class
而不是像這樣的構造函數:
import lombok.Builder;
@Builder
public class C extends B {
private String fieldC;
public C(String fieldC, String fieldB, String fieldA) {
super(fieldB, String fieldA);
this.fieldC = fieldC;
}
}
@Builder
注釋使 lombok 生成內部 Builder 類。 將@Builder.Default
類的內容添加到字段或方法只會修改構建器方法。 請參閱 lombok 的@Builder
描述頁面中的以下示例:
import lombok.Builder; import lombok.Singular; import java.util.Set; @Builder public class BuilderExample { @Builder.Default private long created = System.currentTimeMillis(); private String name; private int age; @Singular private Set<String> occupations; }
使用@Builder 注釋的@Builder
將自動具有一個內部 class,其名稱與外部 class 類似,但后綴為“Builder”。 然后,您可以通過調用來實例化這樣的構建器:
MyClass myObject = MyClass.builder().withSomething("abc").build();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.