如何将Groovy类构造函数转换为Closure?

时间:2012-05-22 16:41:15

标签: groovy closures

所以Groovy有这种相对方便的语法将方法转换为闭包,例如

[1,2,3].each { println it }

// is equivalent to

[1,2,3].each this.&println

但是如何转换类构造函数,例如

[1,2,3].collect { new Thing( it ) }

// is equivalent to

[1,2,3].collect ????

Groovy的反射有Thing.constructors列表要检查,但我无法弄清楚将&符号放在Thing.constructors[0]中。

1 个答案:

答案 0 :(得分:6)

您可以使用invokeConstructor metaClass method来调用给定参数的构造函数。

class Thing {
    Thing(Integer num) { this.num = num }
    Integer num
}

[1,2,3].collect Thing.metaClass.&invokeConstructor