J'ai cree une classe generique CelluleChainee, utilisee par une classe
generique ListeChainnee :
la classe CelluleChainee a la structure suivante :
Field Summary
private java.lang.Object donnee La donnee de la cellule
private CelluleChainee suivant Cellule suivante
Constructor Summary
CelluleChainee() Constructeur par defaut
CelluleChainee(java.lang.Object donnee) Constructeur avec donnee
Method Summary
boolean equals(CelluleChainee cellule) Comparaison des donnees de 2
cellules.
void finalize() Destructeur
java.lang.Object getDonnee() Accesseur en lecture sur la donnee
CelluleChainee getSuivant() Accesseur en lecture sur la cellule
suivante
void raz() Remise a zero de la cellule
void setDonnee(java.lang.Object donnee) Accesseur en ecriture sur la
donnee
void setSuivant(CelluleChainee s) Accesseur en ecriture sur la
cellule suivante
java.lang.String toString() Mise sous forme de chaine pour affichage
J'utilise comme donnee un objet de la classe Sommet :
Field Summary
private ListeChainee aretes Liste chainee d'aretes liees au sommet
private java.lang.Object donnee Objet valeur du sommet
Constructor Summary
Sommet() Constructeur par defaut
Sommet(java.lang.Object o) Constructeur
Method Summary
void addArete(java.lang.Object s) Accesseur en ecriture sur les
adjacents (ajout arete).
void clearAretes() Accesseur en ecriture sur les adjacents (remise a
zero).
boolean equals(Sommet s) Compare 2 Sommets par rapport a leur donnee
ListeChainee getAretes() Accesseur en lecture sur la liste des
adjacents.
java.lang.Object getDonnee() Accesseur en lecture sur la donnee du
sommet.
Arete rechercheArete(java.lang.Object s) Recherche d'une arete
suivant un sommet cible.
void setDonnee(java.lang.Object o) Accesseur en ecriture sur la
donnee.
void supprArete(java.lang.Object s) Accesseur en ecriture sur les
adjacents (suppression arete).
java.lang.String toString() Mise sous forme de chaine pour affichage
Je souhaite comparer 2 cellules de Sommet entre elles : mais Java
n'appelle jamais la methode equals de Sommet avec l'instruction
suivante donnee.equals(cellule.donnee) 'donnee et cellule.donnee etant
de type Sommet
En fait la seule solution serait de caster en dur en mettant (Sommet)
avant chaque objet. Mais ce n'est pas tres pratique pour une classe
generique. Auriez-vous une solution ?
PS : desole pour ce long message mais il n'y a pas de systeme de
pieces jointes
Merci d'avance pour votre reponse
Nicolas HOURDEAU
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Isammoc
Method Summary boolean equals(CelluleChainee cellule) Comparaison des donnees de 2
mouais, pas génial de surcharger equals, vaut mieux redéfinir la méthode... Donc faire: <code> public void equals(Object o) { if(o instanceof CelluleChainee) { cellule = (CelluleChainee) o; // ton code... } return false; } </code>
boolean equals(Sommet s) Compare 2 Sommets par rapport a leur donnee ListeChainee getAretes() Accesseur en lecture sur la
de meme...
Je souhaite comparer 2 cellules de Sommet entre elles : mais Java n'appelle jamais la methode equals de Sommet avec l'instruction suivante donnee.equals(cellule.donnee) 'donnee et cellule.donnee etant de type Sommet En fait la seule solution serait de caster en dur en mettant (Sommet) avant chaque objet. Mais ce n'est pas tres pratique pour une classe generique. Auriez-vous une solution ?
oups, j'ai résolu ton problème sans le vouloir... menfin, en tout cas, si donnee est un Object, il faudra le caster tout de meme...
à moins que tu fasses une méthode de Sommet:
public static equals(Object o1, Object o2) { if( (o1 instanceof Sommet) && (o2 instanceof Sommet) ) { Sommet s1 = (Sommet) o1; Sommet s2 = (Sommet) o2; // ton code pour les comparer } return false; }
PS : desole pour ce long message mais il n'y a pas de systeme de pieces jointes
Merci d'avance pour votre reponse Nicolas HOURDEAU
De rien...
-- Isammoc
Method Summary
boolean equals(CelluleChainee cellule) Comparaison des donnees
de 2
mouais, pas génial de surcharger equals, vaut mieux redéfinir la
méthode...
Donc faire:
<code>
public void equals(Object o)
{
if(o instanceof CelluleChainee)
{
cellule = (CelluleChainee) o;
// ton code...
}
return false;
}
</code>
boolean equals(Sommet s) Compare 2 Sommets par rapport a leur
donnee ListeChainee getAretes() Accesseur en lecture sur la
de meme...
Je souhaite comparer 2 cellules de Sommet entre elles : mais Java
n'appelle jamais la methode equals de Sommet avec l'instruction
suivante donnee.equals(cellule.donnee) 'donnee et cellule.donnee etant
de type Sommet
En fait la seule solution serait de caster en dur en mettant (Sommet)
avant chaque objet. Mais ce n'est pas tres pratique pour une classe
generique. Auriez-vous une solution ?
oups, j'ai résolu ton problème sans le vouloir...
menfin, en tout cas, si donnee est un Object, il faudra le caster tout de
meme...
à moins que tu fasses une méthode de Sommet:
public static equals(Object o1, Object o2)
{
if( (o1 instanceof Sommet) && (o2 instanceof Sommet) )
{
Sommet s1 = (Sommet) o1;
Sommet s2 = (Sommet) o2;
// ton code pour les comparer
}
return false;
}
PS : desole pour ce long message mais il n'y a pas de systeme de
pieces jointes
Merci d'avance pour votre reponse
Nicolas HOURDEAU
Method Summary boolean equals(CelluleChainee cellule) Comparaison des donnees de 2
mouais, pas génial de surcharger equals, vaut mieux redéfinir la méthode... Donc faire: <code> public void equals(Object o) { if(o instanceof CelluleChainee) { cellule = (CelluleChainee) o; // ton code... } return false; } </code>
boolean equals(Sommet s) Compare 2 Sommets par rapport a leur donnee ListeChainee getAretes() Accesseur en lecture sur la
de meme...
Je souhaite comparer 2 cellules de Sommet entre elles : mais Java n'appelle jamais la methode equals de Sommet avec l'instruction suivante donnee.equals(cellule.donnee) 'donnee et cellule.donnee etant de type Sommet En fait la seule solution serait de caster en dur en mettant (Sommet) avant chaque objet. Mais ce n'est pas tres pratique pour une classe generique. Auriez-vous une solution ?
oups, j'ai résolu ton problème sans le vouloir... menfin, en tout cas, si donnee est un Object, il faudra le caster tout de meme...
à moins que tu fasses une méthode de Sommet:
public static equals(Object o1, Object o2) { if( (o1 instanceof Sommet) && (o2 instanceof Sommet) ) { Sommet s1 = (Sommet) o1; Sommet s2 = (Sommet) o2; // ton code pour les comparer } return false; }
PS : desole pour ce long message mais il n'y a pas de systeme de pieces jointes
Merci d'avance pour votre reponse Nicolas HOURDEAU
De rien...
-- Isammoc
nhourdeau
Bonjour,
Merci pour votre aide Isammoc, j'ai reussi a resoudre mon pb en surchargeant equals bien : en suivant le prototype public boolean equals(Object o) et en utilisant instanceof comme vous me l'avez suggere. En fait j'avais mal surcharge la methode en mettant directement le type de l'objet en argument.
Isammoc <Isammoc(no-spam)@wanadoo.fr> wrote in message
mouais, pas génial de surcharger equals, vaut mieux redéfinir la méthode...
En fait j'utilise la methode equals de Object car c la seule qui soit universelle, si j'utilise l'interface Comparator dans les Objects de CelluleChainnee, je ne peux pas mettre directement compareTo dans la methode de comparaison de CelluleChainee >> Javac me jette en me disant compareTo not a method in Object
Nicolas HOURDEAU
Bonjour,
Merci pour votre aide Isammoc, j'ai reussi a resoudre mon pb en
surchargeant equals bien :
en suivant le prototype public boolean equals(Object o) et en
utilisant instanceof comme vous me l'avez suggere. En fait j'avais mal
surcharge la methode en mettant directement le type de l'objet en
argument.
Isammoc <Isammoc(no-spam)@wanadoo.fr> wrote in message
mouais, pas génial de surcharger equals, vaut mieux redéfinir la
méthode...
En fait j'utilise la methode equals de Object car c la seule qui soit
universelle, si j'utilise l'interface Comparator dans les Objects de
CelluleChainnee, je ne peux pas mettre directement compareTo dans la
methode de comparaison de CelluleChainee >> Javac me jette en me
disant compareTo not a method in Object
Merci pour votre aide Isammoc, j'ai reussi a resoudre mon pb en surchargeant equals bien : en suivant le prototype public boolean equals(Object o) et en utilisant instanceof comme vous me l'avez suggere. En fait j'avais mal surcharge la methode en mettant directement le type de l'objet en argument.
Isammoc <Isammoc(no-spam)@wanadoo.fr> wrote in message
mouais, pas génial de surcharger equals, vaut mieux redéfinir la méthode...
En fait j'utilise la methode equals de Object car c la seule qui soit universelle, si j'utilise l'interface Comparator dans les Objects de CelluleChainnee, je ne peux pas mettre directement compareTo dans la methode de comparaison de CelluleChainee >> Javac me jette en me disant compareTo not a method in Object
Nicolas HOURDEAU
Isammoc
(Nicolas Hourdeau) écrivait news::
Bonjour,
Merci pour votre aide Isammoc, j'ai reussi a resoudre mon pb en surchargeant equals bien : en suivant le prototype public boolean equals(Object o) et en utilisant instanceof comme vous me l'avez suggere. En fait j'avais mal surcharge la methode en mettant directement le type de l'objet en argument.
Isammoc <Isammoc(no-spam)@wanadoo.fr> wrote in message
mouais, pas génial de surcharger equals, vaut mieux redéfinir la méthode...
En fait j'utilise la methode equals de Object car c la seule qui soit universelle, si j'utilise l'interface Comparator dans les Objects de CelluleChainnee, je ne peux pas mettre directement compareTo dans la methode de comparaison de CelluleChainee >> Javac me jette en me disant compareTo not a method in Object
C'est pas ce que je voulais dire:
surcharger : faire une méthode du même nom mais avec des paramètres différents, redéfinir: faire exactement le même prototypage, pour que ce soit la méthode appelée.
Merci pour votre aide Isammoc, j'ai reussi a resoudre mon pb en
surchargeant equals bien :
en suivant le prototype public boolean equals(Object o) et en
utilisant instanceof comme vous me l'avez suggere. En fait j'avais mal
surcharge la methode en mettant directement le type de l'objet en
argument.
Isammoc <Isammoc(no-spam)@wanadoo.fr> wrote in message
mouais, pas génial de surcharger equals, vaut mieux redéfinir la
méthode...
En fait j'utilise la methode equals de Object car c la seule qui soit
universelle, si j'utilise l'interface Comparator dans les Objects de
CelluleChainnee, je ne peux pas mettre directement compareTo dans la
methode de comparaison de CelluleChainee >> Javac me jette en me
disant compareTo not a method in Object
C'est pas ce que je voulais dire:
surcharger : faire une méthode du même nom mais avec des paramètres
différents,
redéfinir: faire exactement le même prototypage, pour que ce soit la
méthode appelée.
Merci pour votre aide Isammoc, j'ai reussi a resoudre mon pb en surchargeant equals bien : en suivant le prototype public boolean equals(Object o) et en utilisant instanceof comme vous me l'avez suggere. En fait j'avais mal surcharge la methode en mettant directement le type de l'objet en argument.
Isammoc <Isammoc(no-spam)@wanadoo.fr> wrote in message
mouais, pas génial de surcharger equals, vaut mieux redéfinir la méthode...
En fait j'utilise la methode equals de Object car c la seule qui soit universelle, si j'utilise l'interface Comparator dans les Objects de CelluleChainnee, je ne peux pas mettre directement compareTo dans la methode de comparaison de CelluleChainee >> Javac me jette en me disant compareTo not a method in Object
C'est pas ce que je voulais dire:
surcharger : faire une méthode du même nom mais avec des paramètres différents, redéfinir: faire exactement le même prototypage, pour que ce soit la méthode appelée.