Impression de variables et de valeurs dans un objet Groovy

Comment puis-je imprimer les variables (publiques et internes) et leurs valeurs d'un objet Groovy?

I. e

class X
{
  def X = 10
  def Y = 5

  private void doPrivate()
  {
      def Z = 3
  }
}

Devrait donner

X, 10
Y, 5
Z, 3

cela doit être une solution dynamique, I. e à l'exécution.

27
demandé sur geejay 2010-06-18 16:49:23

2 réponses

dump()

Par exemple

"ddd".dump()

Imprime:

java.lang.String@2ef900 valeur=dddd offset=0 count=4 hash=3078400

63
répondu Dónal 2010-06-18 12:55:18

vous voulez dire comme ça?

def a = "Hi"

a.properties.each { println "$it.key -> $it.value" }

Donne:

class -> class java.lang.String
bytes -> [72, 105]
empty -> false

[edit]

Avec votre édité question, ce serait vous donner:

class -> class X
y -> 5
metaClass -> org.codehaus.groovy.runtime.HandleMetaClass@16de4e1[groovy.lang.MetaClassImpl@16de4e1[class X]]
x -> 10

Je ne pense pas qu'il soit possible d'obtenir la valeur Z à l'exécution... La seule façon de le faire, c'est par L'AST...

32
répondu tim_yates 2010-06-18 13:11:22