簡體   English   中英

如何使用 lombok SuperBuilder 訪問超級 class 的私有變量

[英]How to access private variable of super class by using lombok SuperBuilder

我有兩個 class Parent 和 Child,其中 Parent 和 Child class 有一個同名變量。

-> 父 class

@Getter
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class Parent {
    private String parentA;
    private String parentB;
    private String parentC;
}

-> 孩子 Class


@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class Child extends  Parent {
    private String childA;
    private String parentB;  //variable name is same as Parent class
    private String childC;
}

現在在主要 class 中,我正在使用生成器制作子 class object。

public class Main {
    public static void main(String Args[]) {

        Child child = Child.builder()
                .parentA() 
                .parentB()  // Here it is setting Child class variable
                .parentC()
                .childA()
                .childC()
                .build();
    }
 }

現在我想設置父 class 的 parentB 變量。 有什么方法可以設置嗎?

@SuperBuilder為帶注釋的 class 中定義的每個字段生成一個方法,但不為超類中的字段生成一個方法。 相反,生成的構建器 class extends了超類的構建器 class,因此來自超類的字段的方法繼承自這些構建器。

如果ParentChild中有兩個完全相同的字段,則ChildBuilder中的方法會簡單地覆蓋ParentBuilder中的方法。 再也無法從ParentBuilder調用該方法(除了一些丑陋的MethodHandle hack,您不應該這樣做)。

備注:有兩個相同的字段表示它們具有相似的含義。 如果是這種情況,請protected一個並刪除另一個。 如果它們沒有相同的含義,那么對它們進行同等命名是一個非常糟糕的主意,即使您不使用@SuperBuilder也幾乎肯定會導致錯誤。

暫無
暫無

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

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