![](/img/trans.png)
[英]Using Lombok @SuperBuilder annotation with toBuilder on an abstract 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,因此來自超類的字段的方法繼承自這些構建器。
如果Parent
和Child
中有兩個完全相同的字段,則ChildBuilder
中的方法會簡單地覆蓋ParentBuilder
中的方法。 再也無法從ParentBuilder
調用該方法(除了一些丑陋的MethodHandle
hack,您不應該這樣做)。
備注:有兩個相同的字段表示它們具有相似的含義。 如果是這種情況,請protected
一個並刪除另一個。 如果它們沒有相同的含義,那么對它們進行同等命名是一個非常糟糕的主意,即使您不使用@SuperBuilder
也幾乎肯定會導致錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.