[英]Error while use builder(lombok) in constructor annotation
@Data
@Builder
public static class Common {
private String common1;
private String common2;
}
@Getter
public static class Special extends Common {
private String special1;
@Builder
public Special(String common1, String common2, String special1) {
super(common1, common2);
this.special1 = special1;
}
}
發生以下錯誤:
Error:(149, 9) java: builder() in com.example.home.ExampleDTO.Special cannot override builder() in com.example.home.ExampleDTO.Common
return type com.example.home.ExampleDTO.Special.SpecialBuilder is not compatible with com.example.home.ExampleDTO.Common.CommonBuilder
當我把( builderMethodName = "b"
)這個參數放在@Builder(Special constructor)
它工作正常。
@Builder(builderMethodName = "b")
public Special(String common1, String common2, String special1) {
我不知道為什么第一個代碼會出錯。 請幫幫我。 謝謝
@Builder
在兩個類中都創建了一個靜態方法builder()
; 它返回相應構建器的實例。 但是方法的返回類型不兼容,因為SpecialBuilder
和CommonBuilder
是不同CommonBuilder
相關的類: @Builder
沒有(並且技術上不能)考慮類之間的繼承關系。 所以編譯器抱怨兩個方法同名,沒有參數,但返回類型不同。 這在 Java 中是不可能的。
要解決這個問題,您有兩個選擇:
在兩個類上使用@SuperBuilder
。 @SuperBuilder
旨在與繼承一起使用。
正如您已經發現的那樣,您可以在其中一個類中重命名該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.