教师最近设置了为小型计算器类编码整数和双精度码的任务。措辞如下:
public class Calculator {
public int add(int augend, int addend) { return augend + addend; }
public double add(double augend, double addend) { return augend + addend; }
public int subtract(int minuend, int subtrahend) { return minuend - subtrahend; }
public double subtract(double minuend, double subtrahend) { return minuend - subtrahend; }
public int divide(int dividend, int divisor) { return dividend / divisor; }
public double divide(double dividend, double divisor) { return dividend / divisor; }
public int multiply(int multiplicand, int multiplier) { return multiplicand * multiplier; }
public double multiply(double multiplicand, double multiplier) { return multiplicand * multiplier; }
}
我想知道,鉴于方法在功能上是相同的,如果 通过使用泛型可以以某种方式删除功能的重复吗?
我尝试了几种方法来实现这一目标,最新的方法是使整个类具有如下通用性,但是在将数学运算实际应用于变量的过程中始终会陷入困境
public class Calculator<T extends Number> {
public T add(T augend, T addend) {
// addition is the same for any number type
return augend + addend; // "operator '+' cannot be applied to 'T','T'"
}
// etc...
}
无论我尝试哪种方法,错误消息或其变体都会起作用...有更好的方法吗? (有或没有泛型)