Lombok你也许不知道的 @Builder 坑坑 ~

本文探讨了Lombok的@Builder注解在处理继承关系时可能遇到的问题,包括编译错误和构造器重名。提出了解决方案,如在子类构造函数中包含父类字段,或者使用Lombok的@SuperBuilder注解来解决深层次继承下的Builder模式使用。建议开发者在使用Lombok时深入理解官方文档,以避免潜在的陷阱。

Lombok,使我们提供我们生产效率的一个强大的利器,其通过简单的注解来实现精简代码,消除冗长代码和提高开发效率的目的。我很喜欢使用的一个注解是@Builder,这个注解能让我很轻松的使用构造器模式,这篇文章记录如何在子类中使用@Builder避免一个常见的坑坑。

一、问题

对于下面这两个类,一个父类,一个子类。两个类都想使用@Builder注解,用于使用构造器模式去构造一个对象。

@Getter
@ToString
public class Parent {

    private long id;

    private String name;

    @Builder
    @Getter
    @ToString
    static class Child extends  Parent{
        private String value;
    }


}
复制代码

当我们尝试编译上面的代码时,会报错,报错的内容如下。

无法将类 <包路径>.Parent中的构造器 Parent应用到给定类型;
复制代码

这个原因是,这是由于Lombok未考虑父类的字段,而只考虑到当前子类的字段。

二、解决方案

解决办法有很多种,最简单的一种是我们在子类的构造函数中包含父类的字段,并且对构造函数使用@Builder的注解。

@Getter
@AllArgsConstructor
@ToString
public class Parent {

    private long id;

    private String name;

    @Getter
    @ToString
    static class Child extends  Parent{

        private String value;

        @Builder
        public
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值