La méthode de comparaison ne compile pas
-
15-11-2019 - |
Question
Mon en-tête de classe:
public class GraphEdge implements Comparable<GraphEdge>{
/** Node from which this edge starts*/
protected Point from;
/** Node to which this edge goes*/
protected Point to;
/** Label or cost for this edge*/
protected int cost;
Ma méthode de comparaison:
@Override
public int compareTo(GraphEdge other){
return this.cost-other.cost;
}
Mais Eclipse me donne l'erreur:
La méthode compareto (graphEdge) de type graphEdge doit remplacer une méthode de superclasse
Pourquoiyyyy? J'ai essayé de faire des comparables, avec
@Override
public int compareTo(Object o){
GraphEdge other = (GraphEdge) o;
return this.cost-other.cost;
}
Mais cela a également échoué.
La solution
Très probablement, votre projet est défini sur le niveau de conformité Java 1.5 - essayez de le définir à 1.6 et cela devrait fonctionner. Je n'ai pas d'éclipse ici pour tester, mais je me souviens que lorsqu'il est réglé sur 1.5, je n'ai pas pu utiliser @Override sur l'interface (mais pourraient sur la méthode). Cela a bien fonctionné lorsqu'il est réglé sur 1.6.
C'est-à-dire que cela devrait échouer lorsqu'il est réglé sur 1.5, mais fonctionne bien en cas de 1.6:
interface A {
void a();
}
class B implements A {
@Override
public void a() {
}
}
Alors essayez-le: