J'essaie d'implémenter une méthode d'utilitaire de tri générique pour une liste d'objets de toute classe qui implémente MyInterface. Par Java API (http://java.sun.com/javase/6/docs/api/java/util/Collections.html), signature de la méthode Collections.sort() est:Création d'un objet Comparateur pour le tri de liste générique <? extends T> en utilisant Collections.sort()
public static <T> void sort(List<T> list, Comparator<? super T> c)
Je ne sais pas si la liste avec un paramètre générique peut remplacer une "simple" Liste paramétrées, mais j'ai essayé:
static void mySort(List<? extends MyInterface> myList, SortCriteria mySortCriteria) {
Collections.sort(myList, new Comparator<? super MyInterface>() {
...
});
}
et a obtenu une erreur de compilation,
The type new Comparator(){} cannot extend or implement Comparator<? super MyInterface>
A supertype may not specify any wildcard.
Alors, je l'ai changé:
static void mySort(List<? extends MyInterface> myList, SortCriteria mySortCriteria) {
Collections.sort(myList, new Comparator<MyInterface>() {
...
});
}
Et il compile et fonctionne. Des bonnes explications?
Quand vous dites * "quand je l'ai essayé" *, qu'avez-vous essayé exactement? Pouvez-vous poster du code? –