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

使用Project Lombok时出现模糊方法调用问题求助

解决Lombok生成isMatch()方法的歧义问题

这个问题我之前也碰到过,核心原因是你的NameParserResponse类(或者它继承的Response父类)里出现了两个签名完全一致的isMatch()方法,导致编译器无法判断该调用哪一个。哪怕你移除了@Builder,@Getter注解依然会为boolean类型的match字段自动生成isMatch()方法,如果父类Response本身已经定义了这个方法,冲突就会持续存在。

下面给你几个可行的解决方案:

  • 检查并处理父类方法
    先确认父类Response中isMatch()方法的作用,如果这个父类方法不是你需要的,可以考虑调整继承关系;如果必须保留继承,就手动覆盖父类的方法,明确指定返回当前类的match字段值。

  • 手动编写Getter方法
    禁止Lombok为match字段自动生成Getter,然后自己实现isMatch()方法,这样就能完全控制方法的逻辑,避免冲突:

@Getter
@Builder
public class NameParserResponse extends Response {
    @Getter(AccessLevel.NONE) // 关闭Lombok自动生成该字段的Getter
    private boolean match;

    // 手动实现Getter,覆盖父类方法
    @Override
    public boolean isMatch() {
        return this.match;
    }
}
  • 修改字段名称
    如果业务允许,把match字段改成其他名称(比如matched),这样Lombok生成的Getter方法会变成isMatched(),自然就不会和父类的isMatch()方法冲突了:
@Getter
@Builder
public class NameParserResponse extends Response {
    private boolean matched;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:49:15