Comparateur & lt; String & gt; doit remplacer la méthode super classe
Je suis en train de faire un TreeMap<String, String>
et souhaitez le commander en descendant de la mode. J'ai créé le comparateur:
Comparator<String> descender = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
};
Je construis le TreeMap comme suit:
myMap = new TreeMap<String, String>(descender);
Cependant, j'obtiens l'erreur suivante:
The method compare(String, String) of type new Comparator<String>(){} must override a superclass method
Je n'ai jamais pleinement groked génériques, ce que je fais mal?
source d'informationauteur Kenny Wyland | 2011-08-28
Vous devez vous connecter pour publier un commentaire.
Votre projet Eclipse est apparemment mis à Java 1.5. Le
@Override
annotation est alors en effet pas pris en charge sur les méthodes d'interface. Soit supprimer cette annotation ou réparer votre projet, du niveau de conformité de la version 1.6 de Java.Vous n'avez pas besoin d'écrire une coutume
Comparator
si vous voulez juste pour inverser le naturel (croissant) de la commande.Pour obtenir un descendant de commande suffit d'utiliser:
Ah, j'ai trouvé le problème. Lors de l'instanciation d'une nouvelle instance anonyme de Comparable, je ne suis pas substituant les interfaces des méthodes... je suis leur mise en œuvre. Le @Override directive était le problème. La méthode compare() n'était pas la substitution d'une méthode existante, il a été l'exécution d'une partie de l'interface. J'ai copié ce code à partir d'un autre endroit et il ne devrait pas avoir le @Override.