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

时间:2012-02-07 23:47:04

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

}

这会出现以下错误: “方法不会覆盖或实现超类型的方法”

这里有什么问题?

1 个答案:

答案 0 :(得分:8)

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

abstract class Def<T> extends Abc<T>

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