java - Lombok @Builder 继承 3 个类
问题描述
这可能是一个初学者问题,但我很困惑。
我有 3 个类,如下所示。在这种情况下如何使用 lombok 的 @Builder 注释。
尝试执行以下代码时,我在 C 类中遇到错误。
如果父类B类也有@Builder
注释,C类会起作用吗?
我收到一个错误:- 错误:java:ClassC 中的 builder() 无法隐藏 ClassB 返回类型中的 builder() ClassCBuilder 与 ClassBBuilder 不兼容
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;
}
}
B类:
import lombok.Builder;
public class B extends A {
private String fieldB;
@Builder
public B(String fieldB, String fieldA) {
super(fieldA);
this.fieldB = fieldB;
}
}
A类:
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public abstract class A {
private String fieldA;
}
解决方案
@Builder
应该class
像这样添加到 not 构造函数中:
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;
}
}
注释使lombok@Builder
生成内部 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”。然后,您可以通过调用来实例化这样的构建器:
MyClass myObject = MyClass.builder().withSomething("abc").build();
推荐阅读
- docker - 如何使 traefik 自动分配给同一图像中的一个前端 docker 后端?
- r - 当这些数据帧不等长时,如何匹配两个数据帧之间的奇异值?
- java - 在activityforresult android 8中打开文件的路径文件
- android - 如何用按钮替换文本视图?
- bash - 用于填充 sqlite 表的 Bash 脚本未按预期工作
- jenkins - GCP windows VM 将突然停止允许连接
- java - 基于执行结果返回替代数据结构的方法
- python - 如何将sqlalchemy中列的默认值设置为关系中列的值?
- tfs - vs2008无法连接到tfs2013
- microsoft-graph-api - 创建事件时出错 - 属性“地址”不存在