我以为我知道如何做到这一点,但我得到了一些意想不到的行为,所以显然我错过了一些东西。这里的问题归结为。
基类:
public abstract class Base<T>
{
abstract public void foo(List<? extends T> l);
}
派生类:
public class Derived<T> extends Base
{
@Override
public void foo(List<? extends T> l) { return; }
}
Base 类符合要求,但是当我编译 Derived 类时,我得到:
Derived.java:3:Derived 不是抽象的,不会覆盖 Base 中的抽象方法 foo(java.util.List)
公共类 Derived 扩展 Base
^
Derived.java:5:方法不会覆盖或实现超类型中的方法@Override ^
2 个错误
参数的泛型List<? extends T>
似乎是问题的原因。如果我用基本类型替换两个签名中的那个部分,int
它就可以很好地完成。
谁能告诉我这里发生了什么?