Lombok @Builder注解无法识别Java Record类字段的问题如何解决
问题原因
你遇到的报错确实和Lombok版本对Java Record的支持不完善有关:
Lombok 从1.18.20版本开始才初步支持Java Record的@Builder注解,直到1.18.24版本才正式修复了Record类上标注@Builder时生成的建造者类无法识别Record组件的缺陷,你当前使用的1.18.22版本恰好存在这个兼容问题。
解决办法
- 方案1:升级Lombok依赖到1.18.24及以上版本
这是成本最低的解决方案,升级后你原本的Record代码不需要做任何修改即可正常运行,注意同步升级IntelliJ内置的Lombok插件到对应版本,避免IDE误报错。 - 方案2:不升级版本的前提下,将
@Builder注解放到Record的构造方法上
写法示例:
这种写法在1.18.22版本下可以正常生成对应参数的建造者方法。public record ApiError(String title, Map<String, String> errors) { @Builder(builderMethodName = "internalBuilder") public ApiError(String title, Map<String, String> errors) { this.title = title; this.errors = errors; } public static ApiErrorBuilder builder(String title) { return internalBuilder().title(title); } } - 方案3:暂时使用普通类替代Record实现,就是你已经验证可用的写法,后续升级依赖后再切换回Record即可。
额外排查点
如果升级版本后IDE仍然报找不到方法的错误,大概率是IDE缓存问题,可以按以下步骤清空缓存重启:
- 点击IntelliJ顶部菜单栏
File → Invalidate Caches... - 勾选
Clear file system cache and local history - 点击
Invalidate and Restart等待IDE重启完成即可
内容的提问来源于stack exchange,提问作者ismayilkarimli
相关产品推荐
相关产品推荐

