抽象泛型类

时间:2009-11-06 21:24:14

标签: java generics

我有以下课程:

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)

请帮助我(我需要它用于我的编程语言课程作业)

我非常友好地给我写了一个代码来完成我想要完成的代码 有任何错误或警告 在前面谢谢

2 个答案:

答案 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