这是一个很难尝试和搜索的问题,因为我没有看到其他类似的具体问题,所以如果结果是我没有找到重复的线程,我深表歉意。这是一个与类作业无关的编程问题,我在完全按照规范实现时遇到了问题。
如果我想创建一个
Function<T>
通用抽象类,其唯一的抽象方法是
Apply<T>(T input1, input2)
然后扩展到其他派生函数类,例如 AddTwoNumbers 类,Apply 将返回 T 类型的 input1 和 input2 的总和(实际上应该是 Integer 或 Double),我该如何实现?
我第一次遇到问题
public abstract class Function<T1 extends Number> {
public abstract T1 apply(T1 input1, T1 input2);
}
public class AddTwoNumbers<T1 extends Number> extends Function<T1> {
public T1 apply(T1 input1, T1 input2) {
return input1.intValue() + input2.intValue(); //Error, needs to return type T1, not int or even Integer()
}
}
要求 Function 是允许类型的泛型,但实际上,可以预期 AddTwoNumbers 将专门使用 Integers 来解决此问题。有没有办法可以在 AddTwoNumbers 中编写 apply() 方法,这样
- AddTwoNumbers 完全实现了从 Function 继承的抽象方法
- 如何将两个 T1 值相加并正确返回 T1 值?
事实上,我无法安全地将 T1 转换为整数,并且还保留对 Apply 的覆盖,这是麻烦的部分。
这是我正在研究的问题的概括。
最佳答案
public class AddTwoIntegers extends Function< Integer > {
...
}
关于Java - 数学函数的派生泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172187/