2009-07-17 3 views
2

Je peux obtenir l'identifiant unique comme className @ 2345 de mon objet en appelant sa méthode toString(), mais après avoir écrasé la méthode toString(), comment puis-je obtenir cet identifiant unique?Comment puis-je obtenir l'identifiant unique d'un objet après avoir écrasé sa méthode toString()?

+7

Bordel de LOUD, IL EST UNIQUE PAS. (désolé) –

+0

True c'est juste un code de hachage et pas unique en effet. Mais dans la plupart des cas, je peux l'utiliser pour distinguer les objets. –

+0

"Dans la plupart des cas" définit simplement la probabilité, pas quelque chose que vous comptez généralement dans le logiciel, sauf si vous écrivez du code pour le jeu ;-) – Robin

Répondre

12

Vous pouvez appeler System.identityHashCode() et passer votre objet en paramètre, vous l'obtiendrez.

0

Si vous recherchez une implémentation d'une ligne toString() qui affichera également l'adresse className @, consultez Apache Commons ToStringBuilder.reflectionToString(). Ceci renvoie une chaîne au format: className adresse @ [field1 = valeur1, field2 = valeur2, ...]

+0

Ce n'est pas une adresse mais un code de hachage. – joeslice

2

Plus précisément

obj.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(obj)) 
+0

Ou juste public String identityString() { return super.toString(); } ? – Cowan

Questions connexes