如何使用 lombok SuperBuilder 访问 super class 的私有变量

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

我有两个 class Parent 和 Child,其中 Parent 和 Child class 有一个同名变量。

-> Parent class

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

-> Child 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;
}

现在在 Main class 我正在使用构建器制作 Child 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();
    }
 }

现在我想设置 parentB 变量 parent class。有什么方法可以设置吗?

@SuperBuilder 为注释的 class 中定义的每个字段生成一个方法,但不为来自 superclasses 的字段生成一个方法。相反,生成的构建器 class extends 是 superclass 的构建器 class,因此来自 superclasses 的字段的方法是从那些构建器继承的。

如果 ParentChild 中有两个完全相似的字段,ChildBuilder 中的方法只是覆盖 ParentBuilder 中的方法。无法再从 ParentBuilder 调用方法(除了一些丑陋的 MethodHandle hack,你不应该这样做)。

备注:有两个相同的字段表示它们具有相似的含义。如果是这种情况,请制作一个 protected 并删除另一个。如果它们的含义不同,那么同样命名它们是一个非常糟糕的主意,即使您不使用 @SuperBuilder.

也几乎肯定会导致错误