最近一位教师布置了一个有关整型和浮点型计算器类的编码任务。该任务的要求如下:
无论我尝试哪种方法,都会出现错误信息或其变体...有没有更好的方法来解决这个问题?(使用泛型或不使用泛型)
public final 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...
}
无论我尝试哪种方法,都会出现错误信息或其变体...有没有更好的方法来解决这个问题?(使用泛型或不使用泛型)
Animal
类能否使用您的Calculator
进行add
操作? - NamanDouble.valueOf(augend.doubleValue() + addend.doubleValue())
。 - Sharon Ben AsherDouble.valueOf()
似乎是不必要的。 - Tobydouble
。尝试使用类似于116.0 / 7.0 * 7.0
的东西(这应该返回 116.0,但实际上并不会)。 - Thomas