Lombok @Singular在带有@Builder的构造函数上对子类没有影响

问题描述 投票:0回答:1

所以我刚刚发现了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个回答
0
投票

您可以将@Singular批注添加到List<Order> orders类的构造函数中的Customer参数上,以获得所需的效果。

@Builder
public Customer(String username, String password, String email, @Singular List<Order> orders) {
    super(username, password, email);
    this.orders = orders;
}   
© www.soinside.com 2019 - 2024. All rights reserved.