簡體   English   中英

父構造函數的 Child class 上的 NoArgsConstructor 和 AllArgsConstructor 注釋

[英]NoArgsConstructor and AllArgsConstructor annotation on Child class for parent constructors

溢出社區大家好,我正在努力解決 Lombok 的 inheritance 問題。 我正在嘗試在子 class 上同時添加注釋@AllArgsConstructor@NoArgsConstructor以使用父 lombok 構造函數,但出現錯誤"Duplicate method Child()"

家長 class:

@ToString
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class Parent {
    private String propertyA;
    private String propertyB;
}

孩子 class:

@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class Child extends Parent {
    @Override
    public void setPropertyA(String propertyA) {
        this.propertyA(StringUtils.upperCase(propertyA));
    }
}

錯誤信息:

Child Java 類型中的重復方法 Child() (67109219)

感謝@rentox98的回復,我了解到我的孩子 class 上的 ArgsConstructor 始終為空,從而導致兩個相同的構造函數。

有沒有一種 Lombok 方法可以根據父 lombok ArgsConstructors 在我的孩子 class 上生成 ArgsConstructors?

在您的 Child class 中,您沒有任何屬性,因此@NoArgsConstructor@AllArgsConstructor相同並且會發生錯誤。


如果您想要一個將屬性傳遞給父類的全參數構造函數的全參數構造函數,則必須自己編寫; Lombok 不會生成它。

@SuperBuilder
@NoArgsConstructor
public class Child extends Parent {
    public Child(String propertyA, String propertyB) {
        super(StringUtils.upperCase(propertyA), propertyB);
    }
    
    @Override
    public void setPropertyA(String propertyA) {
        this.propertyA(StringUtils.upperCase(propertyA));
    }
}

如果您想要一個將屬性傳遞給父類的全參數構造函數的全參數構造函數,則必須自己編寫; Lombok 不會生成它。

@SuperBuilder
@NoArgsConstructor
public class Child extends Parent {
    public Child(String propertyA, String propertyB) {
        super(StringUtils.upperCase(propertyA), propertyB);
    }
    
    @Override
    public void setPropertyA(String propertyA) {
        this.propertyA(StringUtils.upperCase(propertyA));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM