我正在尝试创建泛型类型方法的接口,然后在子类中实现它们,依此类推。但我无法弄清楚为什么我的子类抛出一个错误,说我没有从我的界面覆盖抽象方法。代码如下:
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
非常感谢任何帮助
答案 0 :(得分:2)
您通常无法更改参数的界限,就像在重写方法上所做的那样。到编译器,
public <T> T div(T f, T s);
和
public <T extends StdMathOps1> T div(T f, T s);
是两种不同的方法。
有关详细信息,请参阅Cannot override generic interface