Reflection Groovy:如何在基类中声明属性

Reflection Groovy:如何在基类中声明属性,reflection,properties,groovy,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.

在下面的代码中,我需要
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}

我正试图找到一些直接的方法来解决这个问题。

检查一个实例怎么样?此外,我还错过了
子项中的
扩展

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']

这将为您提供所需的:

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

感谢
扩展
部分,我已经更新了相关代码。实际上这里我没有类的实例。我必须获得类中声明的所有属性,然后根据这些属性向类添加一些方法。它还返回
'class'
,我需要类似
declaredFields
所做的事情,然后只添加a
findAll
B.metaClass.properties*.name.findAll{it!='class'}