pra*_*eth 6 lombok spring-boot
我有一个类层次结构如下。
子级 --> 父级 --> 超级父级
由于Child类扩展了Parent类,我必须使用 Lombok 的@SuperBuilder注释而不是@Builder. 另外,据我所知,所有超类都需要有注释@SuperBuilder。但就我而言,SuperParent类来自外部库,我无法在其中添加注释@SuperBuilder。我收到以下编译错误。
The constructor SuperParent(DocumentUploadedResponseDto.DocumentUploadedResponseDtoBuilder<capture#1-of ?,capture#2-of ?>) is undefined.
Run Code Online (Sandbox Code Playgroud)
有什么解决方案或替代方案吗?谢谢。
这有点难看,但这是可能的。您必须在Parent和之间插入一个辅助类到您的继承链中SuperParent;我们就这么称呼它吧SuperParentBuilderEnabler。在此类中,您必须手动实现所有必要的构建器元素。特别是,您必须为 中的字段编写所有 setter 方法SuperParent。这将允许Parent和Child类简单地使用@SuperBuilder注释而无需任何进一步的修改。
我假设SuperParent有一个int superParentField字段,只是为了演示如何在构建器类中编写这样的 setter 方法。此外,我假设该字段可以通过构造函数参数设置。这是你必须做的:
public abstract class SuperParentBuilderEnabler extends SuperParent {
public static abstract class SuperParentBuilderEnablerBuilder<C extends SuperParentBuilderEnabler, B extends SuperParentBuilderEnablerBuilder<C, B>> {
private int superParentField;
public B superParentField(int superParentField) {
this.superParentField = superParentField;
return self();
}
protected abstract B self();
public abstract C build();
}
protected SuperParentBuilderEnabler(SuperParentBuilderEnablerBuilder<?, ?> b) {
super(b.superParentField);
}
}
Run Code Online (Sandbox Code Playgroud)
现在让Parent extend SuperParentBuilderEnabler你完成。
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |