5

所以 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.constructorsList 需要检查,但我不知道在哪里放置 & 符号Thing.constructors[0]

4

1 回答 1

6

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

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

[1,2,3].collect Thing.metaClass.&invokeConstructor
于 2012-05-22T22:52:31.693 回答