相信Lombok插件大家一定不会陌生,一个常用的注解是:@Builer, 它可以帮我们快速实现一个builder模式。以常见的商品模型为例:
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ItemDTO {
/**
* 商品ID
*/
private Long itemId;
/**
* 商品标题
*/
private String itemTitle;
/**
* 商品原价,单位是分
*/
private Long price;
/**
* 商品优惠价,单位是分
*/
private Long promotionPrice;
}
一行代码就可以构造出一个新的商品:
ItemDTO itemDTO = ItemDTO.builder()
.itemId(6542744309L)
.itemTitle("测试请不要拍小番茄500g/盒")
.price(500L)
.promotionPrice(325L)
.build();
System.out.println(itemDTO);
这样写不但美观,而且还会省去好多无用的代码。
Builder注解的使用限制
当我们的实体对象有继承的设计的时候,Builder注解就没那么好用了,还是以商品实体为例,如果现在商品类都继承自一个BaseDTO
@Builder
@NoArgsConstructor
public class BaseDTO {
/**
* 业务身份
*/
private String bizType;
/**
* 场景
*/
private String scene;
}
这时候我们再使用Builder注解就会发现,在子类中无法通过builder方法构造父类中的成员变量
给BaseDTO上加上Builder注解也不会有任何效果。事实上&#x