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
相关产品推荐
相关产品推荐

