2017-10-04 3 views
0

J'ai une question fondamentale de base.Identifiant de l'objet Groovy

Lorsque j'imprime un objet groovy, il ressemble par exemple:

groovy:000> f = new Foo() 
===> [email protected] 

Comment peut-on obtenir la partie id objet 60410cd, étant donné un objet groovy?

+0

Quel est votre cas d'utilisation? – Rao

Répondre

1

[email protected] est le résultat de la méthode toString(), qui utilise la méthode par défaut définie sur java.lang.Object

Tel qu'il est défini dans le JavaDoc, la valeur par défaut toString() retournera:

getClass().getName() + '@' + Integer.toHexString(hashCode()) 

qui, comme vous pouvez voir les pistes le résultat avec la valeur de la méthode hashCode(). La valeur par défaut hasCode() retours:

« entiers distincts pour des objets distincts (ce qui est généralement mis en œuvre en convertissant l'adresse interne de l'objet dans un entier, mais cette technique de mise en œuvre ne sont pas requis par le langage de programmation Java ™.). »

Alors, ce que vous voyez est le résultat des appels par défaut à la fois Object.toString() et Object.hashCode()

Si vous souhaitez modifier la sortie, vous devez remplacer la méthode par défaut toString(), quelque chose comme:

String toString(){ 
    "In Foo!" 
} 
0
Foo f = new Foo() 

Integer.toHexString(System.identityHashCode(f))​​​​​​​​​​​​​​​​​​​​​​​