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

Spring Boot抽象类用@Builder报错:无合适Property构造方法

解决Lombok抽象类与子类Builder构造器报错问题

问题根源

你的子类Apartment使用了@Builder注解,但父类Property用的是@SuperBuilder,两者不兼容,导致Lombok无法自动生成正确调用父类构造器的代码,进而引发构造器参数不匹配或无默认构造器的错误。

正确实现代码

抽象父类 Property

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;

@SuperBuilder
@Getter
@Setter
public abstract class Property {
    private Long id;
    private String address;
    // 无需手动编写构造器,@SuperBuilder会自动生成子类可调用的构造逻辑
}

子类 Apartment

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;

@SuperBuilder // 子类必须使用@SuperBuilder而非@Builder,与父类保持一致
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
public class Apartment extends Property {
    private String houseId;
    private Integer floor;
}

关键说明

  • 当父类使用@SuperBuilder时,所有子类必须同样使用@SuperBuilder,Lombok才会自动处理父类属性的构造传递,无需手动编写super()调用。
  • 若强行在子类使用@Builder,需手动为父类添加全参构造器,并在子类构造器中显式调用父类全参构造器,但这种方式会丧失Lombok自动生成Builder的便捷性,不建议采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:04:55