[英]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.