Groovy:如何获取在基类中声明的属性

时间:2013-04-20 09:18:16

标签: reflection properties groovy

在以下代码中,我需要Child类中可用的所有属性(即foo, bar)。我对groovy添加的所有其他属性不感兴趣。

class Parent {def foo}
class Child extends Parent {def bar}

到目前为止,这些都没有得到结果:

println Child.fields
println Child.properties.each{k,v->println "$k -> $v"}
println Child.declaredFields.findAll { !it.synthetic }.collect {it.name}
println Child.methods.findAll {it.name.startsWith("get")}.collect {it.name}

我试图找出一些可以给我这个的直接方法。

2 个答案:

答案 0 :(得分:4)

这将为您提供所需:

assert ['foo', 'class', 'bar'] == B.metaClass.properties*.name

答案 1 :(得分:0)

检查实例怎么样?另外,我错过了extends

中的Child
class A { def foo }
class B extends A { def bar }

b = new B(foo: 'foo', bar: 'bar')

assert b.properties == [foo: 'foo', class: B, bar: 'bar']