微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Lombok 的 @SuperBuild 注释时,我可以删除 Child 类的构造函数吗

如何解决使用 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 举报,一经查实,本站将立刻删除。