編輯:這個問題特別關注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