[英]Lombok @Builder inheritance for 3 Classes
这可能是一个初学者问题,但我很困惑。
我有 3 个类,如下所示。 在这种情况下如何使用 lombok 的 @Builder 注释。
尝试按照以下代码执行时,Class C 出现错误。
如果父 class Class B 也有@Builder
注释, Class C 会工作吗?
我收到一个错误:- 错误:java:ClassC 中的 builder() 无法隐藏 ClassB 返回类型中的 builder() ClassCBuilder 与 ClassBBuilder 不兼容
Class C:
import lombok.Builder;
public class C extends B {
private String fieldC;
@Builder
public C(String fieldC, String fieldB, String fieldA) {
super(fieldB, String fieldA);
this.fieldC = fieldC;
}
}
Class B:
import lombok.Builder;
public class B extends A {
private String fieldB;
@Builder
public B(String fieldB, String fieldA) {
super(fieldA);
this.fieldB = fieldB;
}
}
Class A:
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public abstract class A {
private String fieldA;
}
@Builder
应该添加到class
而不是像这样的构造函数:
import lombok.Builder;
@Builder
public class C extends B {
private String fieldC;
public C(String fieldC, String fieldB, String fieldA) {
super(fieldB, String fieldA);
this.fieldC = fieldC;
}
}
@Builder
注释使 lombok 生成内部 Builder 类。 将@Builder.Default
类的内容添加到字段或方法只会修改构建器方法。 请参阅 lombok 的@Builder
描述页面中的以下示例:
import lombok.Builder; import lombok.Singular; import java.util.Set; @Builder public class BuilderExample { @Builder.Default private long created = System.currentTimeMillis(); private String name; private int age; @Singular private Set<String> occupations; }
使用@Builder 注释的@Builder
将自动具有一个内部 class,其名称与外部 class 类似,但后缀为“Builder”。 然后,您可以通过调用来实例化这样的构建器:
MyClass myObject = MyClass.builder().withSomething("abc").build();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.