覆盖泛型方法的正确方法是什么?

sna*_*ppy 4 java generics

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");
    }

}
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:"方法不会覆盖或实现超类型中的方法"

这有什么不对?

Str*_*ior 8

您的类定义需要表明您正在扩展父类.

abstract class Def<T> extends Abc<T>
Run Code Online (Sandbox Code Playgroud)

否则,编译器或多或少会假定您正在扩展Abc<object>,因此包含T参数的方法签名与父类的方法签名不匹配(因为它使用的是不同的T参数).