java - 在Java中支持比较和算术运算,如何编写通用方法

  显示原文与译文双语对照的内容

我想在java中编写一个通用方法,如下所示:


public <T extends Number & Comparable<T>> void test(T[] a){


 T b=a[0];


 if(a[0]>0){


 a[0]*=a[0];


 b+=a[1];


 }


}



然后,我可以向方法提供 Integer[] 或者 Double[] 或者其他 Number 子类型。 但是我上面尝试的代码给了我错误。

请帮我,谢谢。

时间: 原作者:

除了基本类型以外,所有类型( 包括推断的泛型类型) 都是不支持算术操作的对象( 包装类使用装箱/取消装箱来获取已知的psuedo行为)

类型擦除使编译后的代码使用强制转换来获得正确的行为( 例如 。 在运行时,JVM不知道传递哪种类型,它需要知道获取正确的装箱/取消装箱行为。

唯一的( 真实) 解决方案是为你想要支持的所有原语提供实现

...