Lombok的@Builder不好使?来试试这个

Lombok的@Builder注解在处理有继承的类时无法构造父类成员变量,但@SuperBuilder注解的引入解决了这个问题。从Lombok v1.18.2版本开始,只需在子类和父类上添加@SuperBuilder,就能在子类实例中通过build方法处理父类成员。本文探讨了Lombok的原理,以及@Builder和@SuperBuilder的区别。
摘要由CSDN通过智能技术生成

相信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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值