在Groovy对象中打印出变量和值

gee*_*jay 31 reflection groovy

如何打印出(公共和内部)变量及其Groovy对象的值?

class X
{
  def X = 10
  def Y = 5

  private void doPrivate()
  {
      def Z = 3
  }
}
Run Code Online (Sandbox Code Playgroud)

应该给

X, 10
Y, 5
Z, 3
Run Code Online (Sandbox Code Playgroud)

这必须是动态解决方案,即在运行时.

Dón*_*nal 78

dump()

例如

"ddd".dump()
Run Code Online (Sandbox Code Playgroud)

打印:

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

  • dump()不打印,它返回一个字符串.您需要打印结果.即println"ddd".dump() (36认同)

tim*_*tes 38

你的意思是这样的?

def a = "Hi"

a.properties.each { println "$it.key -> $it.value" }
Run Code Online (Sandbox Code Playgroud)

得到:

class -> class java.lang.String
bytes -> [72, 105]
empty -> false
Run Code Online (Sandbox Code Playgroud)

[编辑]

通过您编辑的问题,这将为您提供:

class -> class X
y -> 5
metaClass -> org.codehaus.groovy.runtime.HandleMetaClass@16de4e1[groovy.lang.MetaClassImpl@16de4e1[class X]]
x -> 10
Run Code Online (Sandbox Code Playgroud)

我不认为在运行时获取Z值是可能的......我能想到的唯一方法是通过AST ...