使用Lombok @Data注解出现重复Setter、构造器缺失及方法歧义问题咨询
分析Lombok @Data注解引发的问题原因
嘿,我来帮你拆解下你遇到的这几个问题:
1. 重复方法与方法歧义报错
这种情况最常见的原因有两个:
- Lombok依赖/插件版本不兼容:如果你的项目依赖的Lombok版本和IDE安装的Lombok插件版本不一致,或者项目中同时引入了多个版本的Lombok依赖,就会导致注解生成的代码重复。比如插件生成了一套getter/setter,依赖又生成了另一套,最终造成方法重复定义的冲突。
- IDE缓存未清理:IDE有时候会缓存旧的编译结果,当你添加@Data注解后,新生成的Lombok代码和旧的缓存代码重叠,就会出现方法歧义的报错。
2. 默认构造器未生成的问题
这里要注意:@Data注解本身不会生成无参构造器。它包含的@RequiredArgsConstructor注解只会生成包含final字段或者被@NonNull标记的字段的构造器。如果你的Animal类里没有这类字段,那@RequiredArgsConstructor不会生成任何构造器,这时候JVM本来会自动生成默认的无参构造器,但如果遇到下面两种情况就会出问题:
- Lombok插件未正确生效:IDE没识别到
@Data注解,既没生成@RequiredArgsConstructor对应的构造器,也没让JVM生成默认无参,导致编译时找不到构造器。 - 项目中存在其他影响构造器生成的配置:比如某些代码检查工具强制要求显式定义构造器(不过你的代码里Animal没有父类,这个可能性较低)。
快速排查建议
- 先检查项目的Lombok依赖版本,确保和IDE插件版本一致(比如都用最新稳定版)。
- 清理IDE缓存(比如IntelliJ里的
File -> Invalidate Caches...),然后重新编译项目。 - 如果需要无参构造器,可以在
Animal类上额外添加@NoArgsConstructor注解,和@Data配合使用。
内容的提问来源于stack exchange,提问作者Imran
相关产品推荐
相关产品推荐

