首页 > 解决方案 > 具有泛型返回类型的覆盖方法中的参数导致覆盖失败

问题描述

我有以下四个课程:

public interface Account {}

public class SavingsAccount implements Account {}

public abstract class Parent {

    protected abstract <T extends Account> List<T> getAccounts(List<String> ids);
}

public class Child extends Parent {

    @Override
    protected List<SavingsAccount> getAccounts(List<String> ids) {
        return new ArrayList<>();
    }

}

这会在注释 @Override 上产生编译错误:

“方法不会覆盖其超类中的方法”

如果方法的参数被删除,编译器不会抱怨。为什么它首先会产生错误,为什么当参数被删除时错误会消失?

标签: javagenerics

解决方案


推荐阅读