这是一个很难尝试和搜索的问题,因为我没有看到其他类似的具体问题,所以如果我没有找到重复的线程,我深表歉意。这是一个与课堂作业无关的编程问题,我在完全按照规范实施时遇到了问题。
如果我想创建一个
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 转换为 Integer 并且还保留 Apply 的覆盖这一事实是麻烦的部分。
这是我正在研究的问题的概括。