Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déterminer l'adresse d'une instance

20 réponses
Avatar
Zouplaz
Bonjour, j'ai besoin de connaitre l'adresse d'une instance...

Habituellement je me sers de toString() sur pas mal d'objets et par défaut
j'obtiens leur adresse, mais dans certains cas ça ne fonctionne pas
(j'obtiens le nom de la classe par exemple).

Merci

10 réponses

1 2
Avatar
no.bcausse.spam
Zouplaz wrote:

Bonjour, j'ai besoin de connaitre l'adresse d'une instance...

Habituellement je me sers de toString() sur pas mal d'objets et par défaut
j'obtiens leur adresse, mais dans certains cas ça ne fonctionne pas
(j'obtiens le nom de la classe par exemple).

Merci


sans garantie

tu cast en "object" puis tostring()
--
bruno Causse
http://perso.wanadoo.fr/othello

Avatar
no.bcausse.spam
Causse Bruno wrote:

sans garantie

tu cast en "object" puis tostring()


non connerie ;(
--
bruno Causse
http://perso.wanadoo.fr/othello

Avatar
no.bcausse.spam
Causse Bruno wrote:

Bonjour, j'ai besoin de connaitre l'adresse d'une instance...

Habituellement je me sers de toString() sur pas mal d'objets et par défaut
j'obtiens leur adresse, mais dans certains cas ça ne fonctionne pas
(j'obtiens le nom de la classe par exemple).

Merci



/**
* Returns a string representation of the object. In general, the
* <code>toString</code> method returns a string that
* "textually represents" this object. The result should
* be a concise but informative representation that is easy for a
* person to read.
* It is recommendedthat all subclasses override this method.
* <p>
* The <code>toString</code> method for class <code>Object</code>
* returns a string consisting of the name of the class of which the
* object is an instance, the at-sign character `<code>@</code>',
and
* the unsigned hexadecimal representation of the hash code of the
* object.
*
* @return a string representation of the object.
* @since JDK1.0
*/
public String toString() {
return getClass().getName() + "@" +
Integer.toHexString(hashCode());
}

voila le source de toString() class Object


--
bruno Causse
http://perso.wanadoo.fr/othello


Avatar
Black Myst
Zouplaz wrote:
Bonjour, j'ai besoin de connaitre l'adresse d'une instance...
Seule le GC peut connaitre cette information, d'ailleur il a meme la

possibilité de deplacer l'objet en mémoire pour "tasser le tas".

L'@ mémoire d'une instance n'a aucun interet... Que souhaites tu faire ?

Habituellement je me sers de toString() sur pas mal d'objets et par défaut
j'obtiens leur adresse, mais dans certains cas ça ne fonctionne pas
(j'obtiens le nom de la classe par exemple).

Merci


Avatar
Zouplaz
Black Myst - Black_point_Myst_chez_free_point_fr :

Zouplaz wrote:
Bonjour, j'ai besoin de connaitre l'adresse d'une instance...
Seule le GC peut connaitre cette information, d'ailleur il a meme la

possibilité de deplacer l'objet en mémoire pour "tasser le tas".

L'@ mémoire d'une instance n'a aucun interet... Que souhaites tu faire
?



Distinguer deux instances dans les log. J'ai une classe, dont deux
instances sont créées par un framework. Je log tous les appels mais comment
distinguer une instance d'une autre pour retracer la séquence d'exécution
des méthodes ? C'est pour ça que j'ai besoin d'un moyen d'identifier chaque
instance. J'avais pensé à hashcode mais je ne sais pas si ça ferait
l'affaire


Avatar
Zouplaz
Causse Bruno - :

Causse Bruno wrote:

Bonjour, j'ai besoin de connaitre l'adresse d'une instance...

Habituellement je me sers de toString() sur pas mal d'objets et par
défaut j'obtiens leur adresse, mais dans certains cas ça ne
fonctionne pas (j'obtiens le nom de la classe par exemple).

Merci



/**
* Returns a string representation of the object. In general, the
* <code>toString</code> method returns a string that
* "textually represents" this object. The result should
* be a concise but informative representation that is easy for a
* person to read.
* It is recommendedthat all subclasses override this method.
* <p>
* The <code>toString</code> method for class <code>Object</code>
* returns a string consisting of the name of the class of which
the * object is an instance, the at-sign character
`<code>@</code>',
and
* the unsigned hexadecimal representation of the hash code of the
* object.
*
* @return a string representation of the object.
* @since JDK1.0
*/
public String toString() {
return getClass().getName() + "@" +
Integer.toHexString(hashCode());
}

voila le source de toString() class Object




D'accord, d'ou le fameux hashCode...
Je vais vérifier si le framework dont dérive mes classes ne redéfinit pas
toString(), parce que le hashcode n'y était pas... Ou alors j'ai mal
regardé ;-)



Avatar
Zouplaz
Erwan David - :

Zouplaz écrivait :

Bonjour, j'ai besoin de connaitre l'adresse d'une instance...

Habituellement je me sers de toString() sur pas mal d'objets et par
défaut j'obtiens leur adresse, mais dans certains cas ça ne
fonctionne pas (j'obtiens le nom de la classe par exemple).


Il n'y a pas de notion d'adresse en Java.



Dans un debugger si, c'est même le seul moyen de s'y retrouver quand on a
un paquet de references.


Avatar
Zouplaz
Erwan David - :

Zouplaz écrivait :

Erwan David - :

Zouplaz écrivait :

Bonjour, j'ai besoin de connaitre l'adresse d'une instance...

Habituellement je me sers de toString() sur pas mal d'objets et par
défaut j'obtiens leur adresse, mais dans certains cas ça ne
fonctionne pas (j'obtiens le nom de la classe par exemple).


Il n'y a pas de notion d'adresse en Java.



Dans un debugger si, c'est même le seul moyen de s'y retrouver quand
on a un paquet de references.


Ce sont des handle, pas des adresses...



Oui mais un handle a aussi une adresse...




Avatar
Vincent Lascaux
Oui mais un handle a aussi une adresse...


Java se réserve le droit de changer l'adresse physique d'une variable à
n'importe quel moment (lors d'un garbage collector en fait) pour réorganiser
la mémoire interne. Si tu pouvais récuperer l'adresse physique d'une
variable, elle serait temporaire (et donc assez peu util, puisque la valeur
risquerait même d'avoir changé entre le calcul de l'adresse et son
affectation à une variable).

--
Vincent

Avatar
Wismerhill
Zouplaz ecrivit le 02/03/2005 14:12 :
Bonjour, j'ai besoin de connaitre l'adresse d'une instance...

Habituellement je me sers de toString() sur pas mal d'objets et par
défaut j'obtiens leur adresse, mais dans certains cas ça ne
fonctionne pas (j'obtiens le nom de la classe par exemple).


Il n'y a pas de notion d'adresse en Java.



Dans un debugger si, c'est même le seul moyen de s'y retrouver quand
on a un paquet de references.


Ce sont des handle, pas des adresses...


Oui mais un handle a aussi une adresse...


Pas si simple. Quelque part, la JVM maintient une correspondance
handle -> adresse. Mais tu n'as a priori pas besoin d'y mettre tes
doigts (que j'imagine gros et plein de camboui.)





1 2