繁体   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