如何解决使用 Lombok 的 @SuperBuild 注释时,我可以删除 Child 类的构造函数吗
我刚开始使用 Lombok 注释。我的目标是通过使用 Lombok 注释来最小化任何代码样板
我有 ff。我用 Lombok 的 @SuperBuilder
@Service
@SuperBuilder
public class Child extends Parent{ //class doesn't contain matching constructor for autowiring (error message)
private final ChildFieldA a;
private final ChildFieldB b;
private final ChildFieldC c;
public Child(ParentField d,ParentField e,ChildField a,ChildField b,ChildField c){
super(d,e); //Expected 1 arguments but found 3 (error message)
this.a = a;
this.b = b;
this.c = c;
}
}
和抽象父类,
@SuperBuilder
public abstract class Parent{
private final ParentField d;
private final ParentField e;
}
请注意,根据 2 个类的当前定义,Child 类有 2 条错误消息。
如果我完全删除整个 Child 类的构造函数,Child 类上的 @SuperBuilder
注释能否保证最终字段的初始化仍然发生?
换句话说,我可以完全删除 Child 类的 构造函数 并保留 Child 和 上的 @SuperBuilder
注释吗?家长班级?
我特别想使用 @SuperBuilder
。我在某处读到我不能在课堂上将 @Builder
与 @SuperBuilder
混用。
如果您有任何建议或解释,我将不胜感激。
谢谢。
解决方法
这取决于您的用例。如果您仅使用 @SuperBuilder
以编程方式创建类的实例,则删除所有其他构造函数是合理的。
但是,@Service
表示您使用的是 Spring。 Spring 不能使用构建器来执行自动装配。它只能使用基于构造函数或基于 setter 的注入。
因此,您需要一个包含所有必需 bean 的构造函数,或者它们的无参数构造函数和 setter。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。