java - 如何在 JAVA 中对泛型类型执行算术运算?
问题描述
我有一个带有两个数据成员的通用类。这是我写的一段代码
class Calculator<T> {
T num1, num2;
public Calculator(T num1, T num2) {
this.num1 = num1;
this.num2 = num2;
}
}
我想对 num1 和 num2 执行简单的算术运算,例如加减法,我还想执行简单的二进制运算,例如<和> ,但由于它是泛型类型,因此不允许这样做。
但这是不允许的,那么谁能告诉我如何执行这些任务?
解决方案
简短的回答是你不能。
长答案是您可以将类型限制为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
,您需要为此添加一个方法。
推荐阅读
- entity-framework-core - 实体框架核心排除 INNER JOIN
- c# - 封装没有 lambda 表达式的字段
- c# - 如何使用 C# 中的 zkemkeeper 库在图片框中的运行时获取指纹?
- python - 根据熊猫组比较日期
- machine-learning - TFF 联邦学习,评估方法
- ios - 自定义委托以使用 UIView 类中的 pushViewController
- css - Pdfkit python css在aws ec2服务器上没有按预期工作
- r - RMarkdown 使列表的元素在环境中可用
- r - 计算列中重复出现的值的列,重置为新值
- uitableview - 如何删除 Xamarin iOS 中每个单元格中的默认编辑图标