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é.

Était-ce utile?

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:

enter image description here

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top