当前位置: 首页 > 知识库问答 >
问题:

Lombok@Singular在构造函数上使用@Builder的子类中没有影响

路扬
2023-03-14

所以我刚刚发现了Lombok@builder注释,我喜欢它。尤其是对于集合的@singular注释。

在继承的情况下,我读到为子类创建构建器的最有效方法如下:

@Data
@AllArgsConstructor
class User {
    private String username;
    private String password;
    private String email;
}

@Data
@EqualsAndHashCode(callSuper = true)
public class Customer extends User {

    @Singular
    private List<Order> orders;

    @Builder
    public Customer(String username, String password, String email, List<Order> orders) {
        super(username, password, email);
        this.orders = orders;
    }   
}

共有1个答案

甄鹏云
2023-03-14

您可以将@singular注释添加到Customer类的构造函数中的List Orders 参数,以获得所需的效果。

@Builder
public Customer(String username, String password, String email, @Singular List<Order> orders) {
    super(username, password, email);
    this.orders = orders;
}   
 类似资料:
  • 问题内容: 我目前正在使用Builder模式,紧跟在Wikipedia文章 Builder模式 http://en.wikipedia.org/wiki/Builder_pattern中建议的Java实现 这是一个示例代码,说明了我的实现 在我的一些使用此类的应用程序中,我碰巧发现了非常相似的建筑代码,因此我想将其子类化,并将所有重复的代码移入其构造函数中。这就是问题所在。 如何调用超类生成器并将

  • 问题内容: 我正在将Lombok项目与Spring Data JPA一起使用。有什么方法可以将Lombok 与JPA默认构造函数连接? 码: 据我所知,JPA需要默认的构造函数,该构造函数被注解覆盖。有什么解决方法吗? 这段代码给我错误: 问题答案: 更新 根据反馈和John的回答,我已更新了不再使用or的答案,而是通过和创建访问器和变量,通过创建默认构造函数via,最后我们创建了构建器通过via

  • 我使用默认构造函数从子类中设置recordId的值,最初没有使用lombok。最终我决定在这里使用构建器,但现在的问题是lombok构建器在内部覆盖了我的默认构建器,因此从未设置值。

  • 主要的 维京阶层 人类阶级 饮料和小便界面是一样的

  • 问题内容: 我有一个“ ChildClass”类,它扩展了“ ParentClass”类。我不想完全替换父类的构造函数,而是要先调用父类的构造函数,然后再做一些额外的工作。 我相信默认情况下会调用父类的0参数构造函数。这不是我想要的 我需要用参数调用构造函数。这可能吗? 我试过了 但这不起作用,因为您无法修改“ this”。 问题答案: 您可以从子代的构造函数中以“ super”引用父代的构造函数

  • 我正在用Lombok插件做一个Spring项目。我添加了注释,并使父类的字段最终初始化,使用@AllArgsConstructor或@必需ArgsConstructor而不是字段注入(使用类字段的@autowed)。但是,由于某种原因,子类DraftsPostmethod报告了一条消息,即在父类AbstractFuntoryServicemethod中没有找到默认构造函数 我不确定是什么导致了它,