无法覆盖通用接口

时间:2014-05-03 00:20:32

标签: java generics interface override abstract-class

我正在尝试创建泛型类型方法的接口,然后在子类中实现它们,依此类推。但我无法弄清楚为什么我的子类抛出一个错误,说我没有从我的界面覆盖抽象方法。代码如下:

package stdmathops1;
public interface StdMathOps1<T>{
    public <T> T div(T f, T s);
    }
//this is all very simple and not the whole of it, at this point I'm just
//trying to figure out why it won't override the div method.
class Fraction implements StdMathOps1{
    public static void main(String[] args){
    }
    public <T extends StdMathOps1> T div(T f, T s){
        return f;
    }
}

无论我在哪里看到覆盖和使用接口,它似乎都是正确的,但它仍然会抛出

Fraction is not abstract and does not override abstract method div(Object, Object)
in StdMathOps1

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

您通常无法更改参数的界限,就像在重写方法上所做的那样。到编译器,

public <T> T div(T f, T s);

public <T extends StdMathOps1> T div(T f, T s);

是两种不同的方法。

有关详细信息,请参阅Cannot override generic interface