获取Groovy类';闭包属性名
给定以下Groovy类:获取Groovy类';闭包属性名,groovy,Groovy,给定以下Groovy类: class MyClass { def someClosure = {} def someClosure2 = {} private privateClosure = { } def someVal = 'sfsdf' String someMethod() {} } 我需要一种方法来检索分配了闭包的所有公共属性的名称,因此该类的正确结果将是['someClosure','someClosure2'] 我可以假设所有感兴趣的类都有一个
class MyClass {
def someClosure = {}
def someClosure2 = {}
private privateClosure = {
}
def someVal = 'sfsdf'
String someMethod() {}
}
我需要一种方法来检索分配了闭包的所有公共属性的名称,因此该类的正确结果将是['someClosure','someClosure2']
我可以假设所有感兴趣的类都有一个默认构造函数,因此如果这样做更容易,我可以通过
def instance = MyClass.newInstance()
您只需检查每个groovy属性的值:
class Test {
def aClosure = {}
def notClosure = "blat"
private privateClosure = {}
}
t = new Test()
closurePropNames = t.properties.findResults { name, value ->
value instanceof Closure ? name : null
}
assert closurePropNames == ['aClosure']
私有字段不被视为groovy属性,因此它们不会包含在结果中。您不接受答案的原因是什么?