我有以下课程:
public abstract class Step {
public abstract <S,T> S makeAStep(S currentResult, T element);
}
我正在尝试实现它所以它需要两个int并返回它们的总和,如下所示:
public class sumOfInts extends Step {
public <Integer,Integer> Integer makeAStep(Integer currentResult, Integer element){
return currentResult + element;
}
}
但是我收到以下错误:
类型sumOfInts必须实现继承的抽象方法Step.makeAStep(S,T)
请帮助我(我需要它用于我的编程语言课程作业)
我非常友好地给我写了一个代码来完成我想要完成的代码 有任何错误或警告 在前面谢谢
答案 0 :(得分:11)
public abstract class Step<S,T> {
public abstract S makeAStep(S currentResult, T element);
}
public class SumOfInts extends Step<Integer,Integer> {
// etc.
答案 1 :(得分:2)
我同意乔纳森的回答。
还有另一种可能性,如下所示,保留方法本身的类型参数。
在这种情况下,这只是理论,因为类和方法名称表明这对于这个例子没有意义 所以我改变了我的例子的名字:
public abstract class Step {
public abstract <S,T> String makeAStep(S first, T second);
}
public class ConcatTwo extends Step {
public <S, T> String makeAStep(S first, T second){
return String.valueOf(first) + String.valueOf(second);
}
}
注意:这是有效的,因为该操作使用
String.valueOf(Object)
,适用于任何类型(所有子类Object)。对于另一个操作,我们必须使用诸如
之类的东西来限制S和T. 例如S extend Integer
。