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

Java静态内部类Tags出现递归构造器调用错误求助

解决静态内部类的"java: recursive constructor invocation"错误

错误原因

你的Tags静态内部类构造函数里,错误地编写了递归调用自身的代码:

Tags(String tag, String value)  
{
    this(tag, value); // 此处直接调用当前构造函数,形成无限递归
}

编译器会直接拦截这种无限递归的构造函数调用行为,抛出recursive constructor invocation错误。

修复方案

将构造函数修改为给成员变量赋值的逻辑即可:

@Getter
@ToString
@EqualsAndHashCode
static class Tags  
{
    private final String tag;
    private final String value;

    Tags(String tag, String value)  
    {
        this.tag = tag;
        this.value = value;
    }
}

更简洁的写法(借助Lombok)

由于你已经使用了Lombok的@Getter、@ToString、@EqualsAndHashCode注解,可以直接添加@AllArgsConstructor注解,让Lombok自动生成全参构造函数,省去手动编写的步骤:

@Getter
@ToString
@EqualsAndHashCode
@AllArgsConstructor // 新增注解,自动生成全参构造函数
static class Tags  
{
    private final String tag;
    private final String value;
    // 无需手动编写构造函数
}

补充说明

你提到参考的他人代码无此问题,应该是原代码的构造函数是正常的成员变量赋值逻辑,而你修改时误写成了递归调用自身。修正构造函数后,代码即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:02:12