Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抽象泛型类_Java_Generics - Fatal编程技术网

Java 抽象泛型类

Java 抽象泛型类,java,generics,Java,Generics,我有以下课程: public abstract class Step { public abstract <S,T> S makeAStep(S currentResult, T element); } 公共抽象类步骤{ 公共摘要S makeAStep(S currentResult,T元素); } 我正在尝试实现它,因此需要两个int,然后返回它们的总和,如下所示: public class sumOfInts extends Step { public &

我有以下课程:

public abstract class Step {
    public abstract <S,T> S makeAStep(S currentResult, T element);
} 
公共抽象类步骤{
公共摘要S makeAStep(S currentResult,T元素);
} 
我正在尝试实现它,因此需要两个int,然后返回它们的总和,如下所示:

public class sumOfInts extends Step {
    public <Integer,Integer> Integer makeAStep(Integer currentResult, Integer element){
        return currentResult + element;
    }
}
公共类sumOfInts扩展步骤{
公共整数makeAStep(整数currentResult,整数元素){
返回currentResult+元素;
}
}
但我得到了以下错误:

类型sumofts必须实现继承的抽象方法Step.makeAStep(S,T)

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

我恳请你给我写一个代码,它能完成我想完成的事情,而这是不可能的 有任何错误或警告吗 前面谢谢

公共抽象类步骤{
public abstract class Step<S,T> {
    public abstract S makeAStep(S currentResult, T element);
} 

public class SumOfInts extends Step<Integer,Integer> {
    // etc.
公共摘要S makeAStep(S currentResult,T元素); } 公共类sumofts扩展步骤{ //等等。
我同意乔纳森的回答


下面给出的另一种可能性是,将类型参数保留在方法本身上

在这种情况下,这只是一种理论,因为类和方法名称表明这对本例没有意义。
因此,我更改了示例的名称:

    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);
      }
    }
公共抽象类步骤{
公共抽象字符串makeAStep(S第一,T第二);
}
公共类ConcatTwo扩展步骤{
公共字符串makeAStep(第一个,第二个){
返回String.valueOf(第一个)+String.valueOf(第二个);
}
}
注意:这是因为操作使用了
String.valueOf(Object)
,它适用于任何类型(所有子类对象)。对于另一个操作,我们必须使用类似
S扩展整数
例如


此外,Step类本身必须在类级别注册泛型,这样建议才能工作,而不是在方法级别level@Jason+1我同意!我想你的评论与我刚才写的答案是一致的。因为它现在起作用了,我建议你接受对你最有用的答案,可能会放弃投票支持那些对你最有用的答案这些都是有用的。