所以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]
中。
答案 0 :(得分:6)
您可以使用invokeConstructor
metaClass method来调用给定参数的构造函数。
class Thing {
Thing(Integer num) { this.num = num }
Integer num
}
[1,2,3].collect Thing.metaClass.&invokeConstructor