这是一个很难尝试搜索的难题,因为我还没有看到其他类似的具体问题,因此,对于没有找到重复的线程,我深表歉意。这是与课堂作业无关的编程问题,我遇到的问题完全是根据规范实现的。
如果我想创建一个
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的重载这一事实是麻烦的部分。
这是我正在研究的问题的概括。
最佳答案
public class AddTwoIntegers extends Function< Integer > {
...
}
关于java - Java-数学函数的派生泛型类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19172187/