【发布时间】:2012-01-24 18:27:09
【问题描述】:
我想在 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 子类型。但是我上面尝试的代码给了我错误。
请帮助我。谢谢。
【问题讨论】:
-
您要解决的问题是什么? Java 不支持这种泛型操作。如果我们了解用例,也许我们可以提出替代方案。例如,我发现使用包装类数组(如
Integer[])而不是原始数组(如int[])从来都不是一个好主意。您是否有理由需要Integer或Double而不是int或double? -
@DanielPryden:我正在尝试解决:编写一个接受 int[]、float[] 或 double[] 的方法,在其中我需要进行一些比较和算术,然后返回相同的数组类型 int[],或 float[],或 double[]。
-
那么你能做的最好的就是将你的实际计算分解成一个在
double[]上运行并返回double[]的方法(因为double比int和float)。您仍然需要另外两种方法来支持int[]和float[]参数。