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

Service与实现类方法签名一致却提示移除@Override注解问题

解决实现接口方法时@Override注解报错的问题

明明实现类的addPet方法和接口签名完全一致,却收到“Remove @Override annotation”的错误提示?可以从以下几个方面排查解决:

1. 检查参数类的导入是否一致

接口和实现类中,Pet、Response、SecurityContext这些参数类必须是同一个包下的类。比如接口导入的是com.example.model.Pet,但实现类不小心导入了com.example.dto.Pet,这种情况下编译器会判定方法参数类型不匹配,认为你不是在重写接口方法,进而触发报错。

你可以分别查看接口和实现类的导入语句,确认这些类的全限定名完全一致。

2. 确认项目的JDK编译级别

在JDK 1.5及更早版本中,@Override注解只能用于重写父类方法,不能用于实现接口方法。如果你的项目编译级别设置为1.5或更低,就会出现这个错误。

解决方法:

  • 若使用Maven,在pom.xml中设置maven-compiler-plugin的source和target为1.6及以上:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
  • 若直接用IDE设置,比如IntelliJ IDEA,可在File > Project Structure > Project Settings > Project中把Language Level设置为1.6+。

3. 核对方法签名的细节

仔细对比接口和实现类的方法签名,确保以下细节完全一致:

  • 参数顺序:比如接口是addPet(Pet body, SecurityContext securityContext),实现类不能颠倒参数顺序
  • 参数类型:比如List<String>不能写成原始类型List,泛型必须完全匹配
  • 返回值类型:接口返回Response,实现类也必须返回同一个包下的Response类

4. 清理IDE缓存并重建项目

有时候IDE缓存会导致错误提示,执行以下操作尝试修复:

  • 清理项目构建文件(比如Maven执行mvn clean)
  • 在IDE中执行Invalidate Caches / Restart(比如IntelliJ IDEA的File > Invalidate Caches...)
  • 重新构建项目

你的代码示例参考

接口中的目标方法:

public Response addPet(Pet body, SecurityContext securityContext);

实现类中的方法:

@Override
public Response addPet(Pet body, SecurityContext securityContext) {
    // do some magic!
    return Response.ok().entity("magic!").build();
}

从代码上看签名完全一致,优先排查前面提到的「导入类不一致」「JDK版本」这两个常见问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:01:04