我想递归地打印渐变构建的配置(或任何对象)。有没有一种方法可以递归地以渐变打印对象的所有属性,即使(特别是)如果你不知道所有的属性是什么?
下面是一个例子。
idea {
module{
scopes.COMPILE.plus += configurations.playManaged
scopes.PROVIDED.plus += configurations.provided
scopes.each { it ->
println("[${it}]") // how to replace this with something that will print all properties of the object?
}
}
}
在这个例子中,我知道作用域同时具有COMPILE和PROVIDED属性,并且每一个都有一个加号属性。但我不知道这些对象上可能还存在其他哪些嵌套属性。如果有一个函数,当传递任何对象时,所有属性都会递归地打印到控制台,这将允许彻底检查对象,那就太好了。
scopes
是LinkedHashMap
,所以您能做的最好的事情是:
scopes.each { k, v -> println "$k -> $v" }
打印密钥(例如:COMPILE
)及其当前值。
如果它是地图以外的对象,您可以执行以下操作:
scopes.getMetaClass().properties.each { println "PROPERTY $it.name" }
但这只会显示class
和empty
,因为它是Map
:-)