编辑:这个问题特别关注Java原始数组。还有其他一些问题解决了为原始标量类型编写泛型方法的问题,但是数组完全不同以至于需要将这个问题留作将来参考(恕我直言)。有没有一种方法可以编写适用于基本数组类型的通用Java方法?
考虑下面的Java方法:
private int maxIndex(double[] values, double[] maxOut)
{
int index = 0;
double max = values[index];
for (int i = 1; i < values.length; i++) {
if (max < values[i]) {
max = values[i];
index = i;
}
}
if (maxOut != null) {
maxOut[0] = max;
}
return index;
}
有没有写这方面的一个通用版本将与任何原始数字类型的工作方式?作为一个例子,我试过如下:
private <T extends Comparable<T>> int maxIndexDoesNotWork(T[] values, T[] maxOut)
{
int index = 0;
T max = values[index];
for (int i = 1; i < values.length; i++) {
if (max.compareTo(values[i]) < 0) {
max = values[i];
index = i;
}
}
if (maxOut != null) {
maxOut[0] = max;
}
return index;
}
它不大概work--因为自动装箱不会对基本类型数组发生。不是说我真的想要拳击,当然。我想真的就像是能够告诉编译器/运行时,T支持'<'运营商。有没有办法?
没关系,你说***阵列** *。尽管如此,您的代码仍在使用单值泛型。 – Perception 2013-03-06 02:08:08
简答:不需要很长的答案:不会。 – 2013-03-06 05:34:02
@Louis你做了我的一天ahahahahaha – 2013-03-06 12:53:03