簡體   English   中英

如何使用Lombok創建調用超級class的AllArgsConstructor的構造函數?

[英]How to use Lombok to create a constructor that calls AllArgsConstructor of super class?

我有一個超級 class 和孩子 class:

@Data
@AllArgsConstructor
public class Parent {

    private String name;

}
@Data
public class Child extends Parent {

    private int age;

    public Child(String name, int age) {
        super(name);
        this.age = age;
    }

}

如何使用 Lombok 注釋來幫助我創建子 class 構造函數?

提前致謝:)

從 lombok 版本1.18.2開始,您可以使用@SuperBuilder注釋。

@Data
@AllArgsConstructor
@SuperBuilder
public class Parent {

    private String name;

}
@Data
@SuperBuilder
public class Child extends Parent {

    private int age;
}

請記住,注釋需要同時位於父 class 中。

然后您可以將其用作Child child = Child.builder().age(1).name("Mike").build()

正如文檔中所寫

@SuperBuilder 在 class 上生成一個受保護的構造函數,該構造函數將構建器實例作為參數。 此構造函數將新實例的字段設置為來自構建器的值。

官方文檔

正如文檔中所解釋的,這並不能完全生成問題所要求的內容,

          public Child(String name, int age) {
            super(name);
            this.age = age;
        }

但是它創建了一個構造函數,該構造函數將構建器作為參數,並且從該構建器及其包含的參數繼續實例化父 class 中的兩個字段。 但這是 lombok 唯一可能的解決方案,即使用子 class 的構造函數來實例化父 class 中的字段。

請記住,這是 4 年前作為實驗性功能添加的,它仍然是 lombok 的一部分。

暫無
暫無

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

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