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

使用Lombok @RequiredArgsConstructor时遇“预期0参数却传入3个”错误如何修复?

解决Lombok @RequiredArgsConstructor构造器参数不匹配问题

问题原因

@RequiredArgsConstructor的作用是生成包含final字段和未声明初始值的非final字段的构造函数。你遇到的"Expected 0 arguments but found 3"错误,要么是IDE未正确识别Lombok生成的构造器,要么是你传入的参数数量/类型和Lombok实际生成的构造器不匹配。

解决方案

1. 确保Lombok版本兼容Java 17

Java 17需要Lombok 1.18.22及以上版本,更新你的依赖配置:

  • Maven:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.30</version>
    <scope>provided</scope>
</dependency>
  • Gradle:
compileOnly 'org.projectlombok:lombok:1.18.30'
annotationProcessor 'org.projectlombok:lombok:1.18.30'
testCompileOnly 'org.projectlombok:lombok:1.18.30'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'

2. 配置IntelliJ IDEA支持Lombok

  • 打开Settings > Plugins,搜索并启用Lombok插件。
  • 打开Settings > Build, Execution, Deployment > Compiler > Annotation Processors,勾选Enable annotation processing。
  • 重启IDEA,让配置生效。

3. 精确控制构造器参数

如果你的测试类需要传入3个参数(比如title、content、author),可以通过以下方式让@RequiredArgsConstructor生成对应构造器:

方式一:给目标字段添加@NonNull注解

@Entity
@Getter
@Setter
@RequiredArgsConstructor
@Table(name = "article", schema = "chitchat")
public class Article {
    // 其他字段保持不变

    @NonNull
    @Column(name = "title", nullable = false, length = 150)
    private String title;

    @NonNull
    @Column(name = "content", nullable = false, length = 50000)
    private String content;

    @NonNull
    @OneToOne(optional = false, orphanRemoval = true)
    @JoinColumn(name = "author_id", nullable = false)
    private User author;

    // 给不需要纳入构造器的字段添加默认值
    @Column(name = "comment_count", nullable = false)
    private int commentCount = 0;

    @Column(name = "view_count", nullable = false)
    private int viewCount = 0;

    @NonNull
    @Column(name = "creation_date", nullable = false)
    private LocalDateTime creationDate = LocalDateTime.now();
}

方式二:将目标字段设为final

@Entity
@Getter
@Setter
@RequiredArgsConstructor
@Table(name = "article", schema = "chitchat")
public class Article {
    // 其他字段保持不变

    @Column(name = "title", nullable = false, length = 150)
    private final String title;

    @Column(name = "content", nullable = false, length = 50000)
    private final String content;

    @OneToOne(optional = false, orphanRemoval = true)
    @JoinColumn(name = "author_id", nullable = false)
    private final User author;
}

4. 修复IDE缓存问题

如果配置正确仍报错,执行以下操作:

  • 点击Build > Rebuild Project重新编译。
  • 点击File > Invalidate Caches...,勾选清除文件系统缓存,重启IDEA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:20:22