我有两个这样的课程:
@Builder
public class Parent {
final int a;
final int b;
public class static ParentBuilder {
public ParentBuilder setAllTo(final int value) {
return a(value).b(value);
}
}
}
public class Child extends Parent {
final in c;
@Builder(builderMethodName = "childBuilder")
public Child(final int a, final int b, final int c) {
super(a, b);
this.c = c;
}
}
我的班级正在成长,领域也越来越多。
这是使用的原因@SuperBuilder
。但是如何添加自定义的构建器方法呢?
同样的方法也行不通。我尝试了这样的方法:
@SuperBuilder
public abstract class Parent { //yes, I want a abstract parent
final int a;
final int b;
public class static ParentBuilder {
public ParentBuilder setAllTo(final int value) {
return a(value).b(value);
}
}
}
@SuperBuilder
public class Child extends Parent {
final in c;
}
Edit
目前还不可能。当我尝试以同样的方式执行此操作时,出现了异常:@SuperBuilder does not support customized builders. Use @Builder instead.
重写是一个像这样的内部类:
public abstract static class ParentBuilder<C extends ParentBuilder, B extends Parent.ParentBuilder<C, B>> {
// custom imlementations here
}
我最近尝试定制@SuperBuilder
使用 Lombok 1.18.8 和 IntelliJ,效果很好。我面临的唯一问题是,我失去了使用的能力toBuilder
SuperBuilder 中的标志 -@SuperBuilder(toBuilder=true)
.
下面是重写 @SuperBuilder 方法的代码。
public static abstract class ChildBuilder<C extends Child, B extends ChildBuilder<C, B>>
extends ParentBuilder<C, B> {
private LocalDate date;
public B date(String dateStr) {
this.date = LocalDate.parse(dateStr);
return self();
}
}
我在这里添加了我的工作代码:在龙目岛自定义 SuperBuilder https://devnip.blogspot.com/2020/09/how-to-override-methods-of-superbuilder.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)