如何正确地覆盖一个通用方法?

4
public abstract class Abc<T> {
    public abstract void f1(T a);  
}

abstract class Def<T> extends Abc {

    @Override
    public void f1(T a) {
        System.out.print("f");
    }

}

这会产生以下错误:“method does not override or implement a method from a supertype”(方法未覆盖或实现超类型的方法)。
这里出了什么问题?
1个回答

8
你的类定义需要表明你是泛型地扩展了父类。
abstract class Def<T> extends Abc<T>

否则,编译器大致上会认为你正在扩展 Abc<object>,所以包括一个 T 参数的方法签名与父类不匹配(因为它使用了不同的 T 参数)。请保留 HTML 标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接