Nous migrons notre code existant de Java 1.5 vers Java 8, et en compilant avec -Xlint, je suis tombé sur des avertissements comme "appel non contrôlé à compare(T,T)
en tant que membre du type brut Comparator
". Je comprends à peu près que je dois dire en quelque sorte quel type de données je passerais à Comparator
, mais j'utilise des génériques pour pouvoir transmettre différents types de données, alors comment puis-je éliminer cet avertissement.Appel non coché pour comparer (T, T) en tant que membre du type brut Comparateur
Voici un extrait de mon code où je vois cet avertissement:
private static void mergeSort(Object[] source, int[] src,int[] dest,
int low, int high, int off, Comparator c) {
int length = high - low;
for (int i=low; i<high; i++)
for (int j=i; j>low && c.compare(source[dest[j-1]], source[dest[j]])>0; j--) {
int t = dest[j];
dest[j] = dest[j-1];
dest[j-1] = t;
}
return;
}
Et, cela est appelé:
public void setSort(Comparator<T> comparator) {
List<T> currentList = getCurrentList();
int[] dst = new int[currentList.size()];
for (int i=0; i< currentList.size(); i++)
dst[i]=i;
int [] src = dst.clone();
mergeSort (currentList.toArray(), src, dst,0, dst.length, 0, comparator);
}
Depuis que je suis déjà dit dans Comparator<T> comparator
setSort()
méthode , pourquoi je reçois toujours l'erreur ci-dessous?
warning: [unchecked] unchecked call to compare(T,T) as a member of the raw type Comparator [multiant] for (int j=i; j>low && c.compare(source[dest[j-1]], source[dest[j]])>0; j--) {
Tant de problèmes peuvent être évités simplement ne pas utiliser les types bruts. (Ajoutez un paramètre de type à votre 'Comparateur'.) –