You need to enable JavaScript to run this app. Java泛型接口实现提示Method does not override错误怎么解决?
优惠活动
大模型
产品
解决方案
定价
更多

Java泛型接口实现提示Method does not override错误怎么解决?

Java泛型接口方法重写报错问题分析

你的写法核心问题是泛型的声明位置不符合重写规则,具体原因和解决方法如下:

问题根因

  • 你在接口中定义的<T, R> T create(final R req)属于方法级泛型,泛型参数<T>、<R>是归属于方法本身的,含义是:该方法的具体类型由调用方在调用时动态指定,实现类必须兼容所有合法的T、R类型,不能自行固定参数和返回值类型。
  • 你在实现类中直接把返回值固定为CustomerResponseObject、参数固定为CustomObject,相当于人为缩小了方法的适用范围,完全不符合方法重写的要求,因此编译器会抛出Method does not override method from its superclass错误。

解决方法

你的需求是封装通用服务接口,每个业务实现类对应固定的请求、返回类型,应该把泛型声明到接口级别而非方法级别:

1. 修改通用接口定义

@Service
// 泛型声明到接口上,T为当前业务统一返回值类型,R为当前业务统一请求参数类型
public interface CustomInterface<T, R> {

    List<T> get(final R req);

    T getById(final String id);

    T create(final R req);

    T update(final String id, final R req);

    T patch(final String id, final R req);

    T delete(final String id);

}

2. 修改实现类写法

实现类直接指定对应业务的泛型具体类型即可正常重写方法:

// 明确当前实现类对应的返回类型为CustomerResponseObject,请求参数类型为CustomObject
public class CustomImpl implements CustomInterface<CustomerResponseObject, CustomObject> {
    ///// This is the implementation of one of the methods!
    @Override
    public CustomerResponseObject create(final CustomObject req) {
        return null;
    }
    // 其余方法会自动匹配泛型类型,不需要额外处理
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 07:15:08