Groovy 列出类的所有属性

标签 groovy properties

我正在尝试使用 Groovy 列出属性(即具有 getter 方法的所有属性)。我可以使用 myObj.properties.each { k,v -> println v} 来完成此操作,效果很好。但是,这也会打印整个父类(super class)层次结构。如果我只想列出当前类(而不是父类(super class))的属性,这可能吗?

最佳答案

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

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)
    }
}

关于Groovy 列出类的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027488/

相关文章:

xml - groovy XmlSlurper 不解析我的 xml 文件

java - 如何在 Groovy 中模拟 String.equals?

java - 使用 UnetSocket 在 unetstack 中创建客户端和服务器节点之间的通信

c# - 我可以创建具有属性的 Web 服务吗?

iphone - Object c property dealloc,哪个是正确的?

grails - 在具有equals方法的域类上, 'as JSON'出现Grails 2.5.5错误

java - 使用@PropertySource配置Spring属性

java - 你如何转义冒号(:) in Properties file?

java - 从不同的类获取数据而不用在java中重新打开JFrame?

java - 如何在groovy(或java)中找到当前的基本执行目录?