首页 > 解决方案 > 如何在 JAVA 中对泛型类型执行算术运算?

问题描述

我有一个带有两个数据成员的通用类。这是我写的一段代码

class Calculator<T> {
    T num1, num2;
    public Calculator(T num1, T num2) {
        this.num1 = num1;
        this.num2 = num2;
    }
}

我想对 num1 和 num2 执行简单的算术运算,例如加减法,我还想执行简单的二进制运算,例如<> ,但由于它是泛型类型,因此不允许这样做。

但这是不允许的,那么谁能告诉我如何执行这些任务?

标签: javaclassgenerics

解决方案


简短的回答是你不能。

长答案是您可以将类型限制为T特定类型。

  • 为了比较,您可以将其限制为T extends Comparable<T>之后您可以num1.compareTo(num2)
  • 对于加法和减法,您可以将其限制为T extends Number,然后对取自 number 的原始类型进行算术运算:
int a = num1.intValue();
int b = num2.intValue();

int sum = a + b;
int diff1 = a - b;
int diff2 = b - a;

最后一种方法的问题是将算术结果转回T,您需要为此添加一个方法。


推荐阅读