[英]How can Lombok's @Builder/@AllArgsConstructor invoke a custom constructor?
我有一个自定义的无参数构造函数,我想由Lombok生成的Builder调用它。 我认为这等同于拥有一个带有所有参数的构造函数,而该参数首先要调用这样的自定义无参数构造函数。
我会举例说明
@Builder
@Data
public class BuilderExample extends Foo{
private String name;
private int age;
public BuilderExample(){
super.setSome(thing);
}
}
由BuilderExample.build()
创建的实例应设置super.setSome(thing);
到目前为止,我能找到的唯一方法是编写all-args-constructor并使其调用no-args-one。 我认为这击败了使用Lombok的构造函数和构造函数的所有想法,就好像字段的数量大于一或两个,all-args构造函数的编写和维护变得乏味。
还有另一种方法可以做到这一点吗?
您可以定义一个几乎空的嵌套
class BuilderExampleBuilder {
public BuilderExample build() {
BuilderExample result = new ...all the stuff Lombok does
result.setSome(thing);
return result;
}
}
但这有一些问题:
调用result.setSome(thing)
不能使用super
关键字。 这可以通过提供类似的方法来解决
私人superSetSome(事物){super.setSome(事物); }
您也可以使用非静态初始化程序块,例如
{
super.setSome(thing);
}
这就是所有可以做的事,没有很好的解决方案。 没有钩子允许将代码注入到构造器或构造器中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.