如何实现通用计算器类

时间:2018-12-04 16:58:56

标签: java generics

教师最近设置了为小型计算器类编码整数和双精度码的任务。措辞如下:

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...
}

无论我尝试哪种方法,错误消息或其变体都会起作用...有更好的方法吗? (有或没有泛型)

0 个答案:

没有答案