Lombok @SuperBuilder编译报错:父类PartyBuilder不接受参数
解决Lombok @SuperBuilder编译错误:
type Party.PartyBuilder does not take parameters 嘿,我之前也踩过这个Lombok的坑,一眼就知道问题出在哪了——你的父类Party用的是普通的@Builder注解,但子类Person用了@SuperBuilder,这俩注解搭配在一起就会触发这个编译错误!
问题根源
Lombok的@SuperBuilder是专门为继承场景设计的构建器注解,它要求父类必须提供兼容的可继承构建器结构。而普通的@Builder生成的是独立的、不支持子类扩展的构建器,子类用@SuperBuilder去继承时,就会因为父类构建器不支持参数传递而报错。
修复方案
把父类Party的@Builder替换成@SuperBuilder即可,这是最直接也最可靠的解决方式:
修改后的Party类:
@Data @SuperBuilder @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode public class Party { protected Long id; protected String status; }
Person类可以保持原有的注解不变(已经正确使用了@SuperBuilder和callSuper = true的@EqualsAndHashCode):
@Data @SuperBuilder @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper = true) public class Person extends Party { private String name; private Long sex; }
替代方案(不推荐)
如果因为项目限制没法修改父类的注解,可以尝试在父类Party的@Builder上加上toBuilder = true参数,不过这个方案只是临时兼容,不如统一使用@SuperBuilder稳定,尤其是在复杂继承场景下更容易出问题。
内容的提问来源于stack exchange,提问作者Nikolas
相关产品推荐
相关产品推荐

