【发布时间】:2021-05-03 11:18:57
【问题描述】:
我有一个包含两个数据成员的通用类。这是我写的一段代码
class Calculator<T> {
T num1, num2;
public Calculator(T num1, T num2) {
this.num1 = num1;
this.num2 = num2;
}
}
我想对 num1、num2 进行简单的算术运算,比如加减法,我还想进行简单的二元运算,比如 和 > 但由于是泛型,所以不允许这样做。
但这是不允许的,那么谁能告诉我如何执行这些任务?
【问题讨论】:
-
减法对于
Calculator<Cat>意味着什么?由于T不受限制,它可以是任何东西,例如Cat。您尝试做的事情对编译器毫无意义。 --- 由于泛型不能使用 primitive 类型,您将强制所有值自动装箱,这也不好。只需创建一个适用于广泛值类型的计算器,例如BigDecimal。如果要使用原语,请使用long或double。任何其他类型都是不必要的,因为当您拥有long版本时,您实际上并不需要int版本。