gpt4 book ai didi

java - Lombok 的 @Builder/@AllArgsConstructor 如何调用自定义构造函数?

转载 作者:行者123 更新时间:2023-12-02 10:46:22 25 4
gpt4 key购买 nike

我有一个自定义的无参数构造函数,我希望 Lombok 生成的构建器来调用它。我认为这相当于有一个带有所有参数的构造函数,首先调用这样一个自定义的无参数构造函数。

我会用一个例子来解释

@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 构造函数和构建器的所有想法,就好像字段数量高于一两个一样,全参数构造函数的编写和维护变得繁琐。

还有其他方法可以实现这一目标吗?

最佳答案

您可以定义一个几乎为空的嵌套

class BuilderExampleBuilder {
public BuilderExample build() {
BuilderExample result = new ...all the stuff Lombok does
result.setSome(thing);
return result;
}
}

但这有一些问题:

  • all-args-构造函数很冗长,并且容易忘记新字段。
  • 调用 result.setSome(thing) 不能使用 super 关键字。这可以通过提供类似的方法来解决

    私有(private) superSetSome(Thing thing) { super.setSome(东西);}

您还可以使用非静态初始化 block ,例如

{
super.setSome(thing);
}
<小时/>

能做的就是这些,没有什么好的解决方案。没有允许将代码注入(inject)构造函数或构建器的钩子(Hook)。

关于java - Lombok 的 @Builder/@AllArgsConstructor 如何调用自定义构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com