如何将Groovy类构造函数转换为闭包?
所以Groovy有这种相对方便的语法来将方法转换为闭包,例如如何将Groovy类构造函数转换为闭包?,groovy,closures,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的反射有东西。构造函数列表要检查,但我不知道在东西中放置符号的位置。构造
[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的反射有东西。构造函数
列表要检查,但我不知道在东西中放置符号的位置。构造函数[0]
可以使用它为给定参数调用构造函数
class Thing {
Thing(Integer num) { this.num = num }
Integer num
}
[1,2,3].collect Thing.metaClass.&invokeConstructor
这是一个好问题。我认为这是不可能的,因为Groovy继承了Java在方法和构造函数之间的区别(即构造函数不仅仅是类方法);但是,谁知道呢?:)太棒了,真管用。我更喜欢更简洁的东西,比如
东西。&new
,但那是Java。你知道这比{newthing(it)}
有什么性能优势还是劣势吗?