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

Ste*_*ert 5 groovy closures

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

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

// is equivalent to

[1,2,3].each this.&println
Run Code Online (Sandbox Code Playgroud)

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

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

// is equivalent to

[1,2,3].collect ????
Run Code Online (Sandbox Code Playgroud)

Groovy的反射有Thing.constructorsList来检查,但我无法弄清楚放入&符号的位置Thing.constructors[0].

Art*_*ero 6

您可以使用invokeConstructormetaClass方法调用给定参数的构造函数.

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

[1,2,3].collect Thing.metaClass.&invokeConstructor
Run Code Online (Sandbox Code Playgroud)