Lombok @Singular 对 Constructor 上带有 @Builder 的子 class 没有影响
Lombok @Singular has no effect in child class with @Builder on Constructor
所以我刚刚发现了 Lombok @Builder
注释并且我喜欢它。特别是对于集合的 @Singular
注释。
在继承的情况下,我读到为子 class 创建 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
无效。只能将订单列表传递给创建的构建器,而不是单个订单。对于这种情况是否有更好的解决方法,或者我必须接受它的现状?
可以在Customer
class的构造函数中的List<Order> orders
参数中添加@Singular
注解得到想要的效果
@Builder
public Customer(String username, String password, String email, @Singular List<Order> orders) {
super(username, password, email);
this.orders = orders;
}
所以我刚刚发现了 Lombok @Builder
注释并且我喜欢它。特别是对于集合的 @Singular
注释。
在继承的情况下,我读到为子 class 创建 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
无效。只能将订单列表传递给创建的构建器,而不是单个订单。对于这种情况是否有更好的解决方法,或者我必须接受它的现状?
可以在Customer
class的构造函数中的List<Order> orders
参数中添加@Singular
注解得到想要的效果
@Builder
public Customer(String username, String password, String email, @Singular List<Order> orders) {
super(username, password, email);
this.orders = orders;
}