所以我刚刚发现了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
无效。只能将订单列表传递给创建的生成器,而不是单个订单。对于这种情况,是否有更好的解决方法,还是我必须按原样接受?
您可以将@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;
}