You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Lombok @SuperBuilder子类继承父类属性失效的解决方法

解决Lombok @SuperBuilder父类属性未被识别的问题

当使用Lombok的@SuperBuilder实现继承类的构建时,子类Builder不会直接暴露父类的属性设置方法,必须通过特定语法初始化父类属性,这是@SuperBuilder的分层Builder设计逻辑导致的。

解决方案

方法1:兼容所有Lombok版本的标准写法

修改Main类中构建CChild的代码,通过super()进入父类Builder上下文设置父类属性,完成后用end()回到子类Builder:

public class Main {
    public static void main(String [] args) {
        CParent child = CChild
            .builder()
            .super() // 进入父类属性配置上下文
            .parentId(123) // 设置父类的parentId属性
            .end() // 返回子类属性配置上下文
            .childId("789") // 设置子类的childId属性
            .build();

        CHouse house = CHouse
            .builder()
            .address("address")
            .description("description")
            .parent(child)
            .build();
    }
}

方法2:简化写法(需Lombok 1.18.20+)

如果使用Lombok 1.18.20及以上版本,@SuperBuilder支持直接在子类Builder中调用父类属性的设置方法,无需显式调用super()和end(),只需确保父类和子类都正确标记@SuperBuilder注解即可,原构建代码无需额外修改。

额外检查项

  • 确保父类CParent和子类CChild都添加了@SuperBuilder注解,这是继承Builder功能的前提。
  • 不要在子类中重复定义父类已有的属性,否则会覆盖父类属性导致异常。

内容的提问来源于stack exchange,提问作者jgialis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:40:32