Bonjour à tous,
Je travaille actuellement sur un petit projet consistant à créer une classe abstraite de graphe la plus générale possible pour ensuite l'appliquer sur un problème d'application.
Je suis parti sur un code avec 4 interfaces représentant chacun un graphe, un noeud, un coté et le "label" des noeuds/cotés (pour des raisons de généralisation, même si à priori dans la plupart des cas, j'imagine qu'utiliser un String aurait suffit).
Je rencontre un petit problème dont je n'arrive pas à sortir ; voici les portions de code concernées :
Interface Edge :
1 2 3 4 5
| public interface Edge<T> {
public void addData(T data);
public void removeData(T data);
public boolean compareTo(Edge<T> edge);
} |
Implémentation :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import java.util.ArrayList;
public class EdgeImplementation<T> implements Edge<T> {
private Label<T> label;
private int start;
private int end;
private ArrayList<T> data;
public boolean compareTo(EdgeImplementation<T> edge){ // ligne de l'erreur
if (this.start == edge.start && this.end == edge.end){
ArrayList<T> data1 = this.data;
ArrayList<T> data2 = edge.data;
return data1.equals(data2);
}
else return false;
}
// portion de code en plus ...
} |
Ce à quoi Eclipse m'affiche une erreur disant que je dois implémenter la méthode héritée compareTo(Edge<T>). Le problème, c'est que si je modifie la ligne de l'erreur en
public boolean compareTo(Edge<T> edge)
... les variables end, start et data ne sont plus reconnues (puisqu'elles sont dans la classe EdgeImplementation et non Edge).
Du coup, il y a sans doute quelque chose que j'ai mal compris sur la manière d'utiliser les interfaces ; pourriez vous m'aider ?
Merci
Partager