Bonjour,
personne n'as jamais eu envie de faire un équals d'objets mais sur toutes les primitives recursives de l'objet ?
Merci
Version imprimable
Bonjour,
personne n'as jamais eu envie de faire un équals d'objets mais sur toutes les primitives recursives de l'objet ?
Merci
Les "primitives récursives d'un objet" c'est remontée la hiérarchie de parents pour ses attributs, jusqu'à ne plus tomber que sur des types primitifs finalement ?!...
Si ça correspond : je ne vois pas l'intérêt de <<réinventer la roue>> ; les méthodes EQUALS des attributs en 1e niveau font déjà ça pour toi.
:?
Ne crois-tu pas que la methode equals vérifie l'adresse de l'objet et pas ses données... Moi je pense que c'est le cas et cela justifie ma question.
Salut,
la méthode equals(Object) vérifie que les objets sont égaux par leur(s) attribut(s) et non par leur adresse.
Si tu as des questions plus précises, n'hésite pas !
Fred
Pour une comparaison des adresses (si l'objet est le même) c'est le symbole "==" qui et retourne vrai ou faut.Citation:
Envoyé par Shiftane
La methode equals compare les valeures des 2 objets.
Salut,
Attention car l'implémentation par défaut de la méthode equals() se contente de vérifié les références des objets...Citation:
Envoyé par Regis.C
Shiftane >> Que veux-tu exactement ?
Si tu veux coder tes méthodes equals() facilement tu peux utiliser l'API Jakarta Commons Lang et sa classe EqualsBuilder...
a++
Donc si j'ai deux objets différent avec les meme valeur a l'intérieur, je n'aurais pas la réponse true à la sortie de mon equals à moins de surcharger la méthode equals, c'est bien ca ?
Exactement.
Java n'extrapole jamais un comportement fonctionnel dans le vide!
C'est pour ça qu'on l'aime...
;)
En effet, c'est d'ailleurs indiqué dans la documentation de Object.equals() :Citation:
Envoyé par Shiftane
C'est à chaque classe de spécifier ses conditions d'égalités...Citation:
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).
a++
Donc si je veux comparer toute les valeurs et non les références d'un objet, ceci n'est pas possible sans surcharger dans chaque classe la méthode Equals()
C'est tout à fait ca.Citation:
Envoyé par Shiftane
a++
Donc il ne serait pas complétement inutile de faire une méthode qui parse récursivement 2 objects pour comparer chacun des ces attributs wapper ou primitive ?
Peut-être qqun y a-t-il deja penser ?
Salut,
bah, ca donnerai ca ? :
Je serai presque amené à dire que c'est une fonction equals "classique"...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 fonction equals (Object o) on cast l'objet o pour chaque element e de o si e n'est pas un type primitif si !e.equals(this.element) retourner faux fin si fin si si e est un type primitif si e!=this.element retourner faux fin si fin si fin pour retourner vrai fin fonction
Le pseudo langage, c'est fait expres ;)
Bien à toi
Fred
As-tu jeter un coup d'oeil à la classe EqualsBuilder ??? C'est exactement ce qu'elle propose...Citation:
Envoyé par Shiftane
a++
Ben merci je crois que j'ai tout ce qu'il me faut...
La classe ce forum... LOL:P