Groovy列出类的所有属性

Jef*_*rey 5 groovy properties

我正在尝试使用Groovy列出属性(即具有getter方法的所有属性).我可以使用这样做myObj.properties.each { k,v -> println v},并且工作正常.但是,它也会打印整个超类层次结构.如果我只想列出当前类(而不是超类)的属性,那可能吗?

sta*_*229 5

这是我破解的一种方法,但也许您可以在此基础上进行构建。

class Abc {

    def a
    def b

}

class Xyz extends Abc {
    def c
    def d
}

def xyz = new Xyz(c:1,d:2)

xyz.metaClass.methods.findAll{it.declaringClass.name == xyz.class.name}.each { 
    if(it.name.startsWith("get"))  {
        println  xyz.metaClass.invokeMethod(xyz.class,xyz,it.name,null,false,true)
    }
}
Run Code Online (Sandbox Code Playgroud)