【问题标题】:Lombok @Singular has no effect in child class with @Builder on ConstructorLombok @Singular 在构造函数上使用@Builder 的子类中没有影响
【发布时间】:2020-08-25 17:22:06
【问题描述】:

所以我刚刚发现了 Lombok @Builder 注释,我喜欢它。尤其是集合的 @Singular 注释。

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

@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;
    }   
}

这种方法的唯一问题是订单字段上的@Singular 无效。只能将订单列表传递给创建的构建器,而不是单个订单。对于这种情况是否有更好的解决方法,还是我必须接受它的现状?

【问题讨论】:

    标签: java annotations builder lombok


    【解决方案1】:

    您可以在Customer类的构造函数中为List&lt;Order&gt; orders参数添加@Singular注解,以获得想要的效果。

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

    【讨论】:

    • 谢谢,这正是我正在寻找的,但我在任何文档或示例中都没有找到它
    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    相关资源
    最近更新 更多