Lambda 对Kotlin中特定实例的方法的引用

Lambda 对Kotlin中特定实例的方法的引用,lambda,kotlin,Lambda,Kotlin,在Java8中,我们可以引用类实例的方法。这里有一个例子 Function1<Integer, Object> ref = a::getItem; 但是在这里,我仍然需要一个适配器的实例来调用它。我看到的另一个备选方案是这样定义lambda: val ref: (Int) -> Any = { a.getItem(it) } 由于Kotlin 1.1,您可以使用: val f = a::getItem 早期的Kotlin版本没有此功能,并且要求您每次都创建一个lambd

在Java8中,我们可以引用类实例的方法。这里有一个例子

Function1<Integer, Object> ref = a::getItem;
但是在这里,我仍然需要一个
适配器的实例来调用它。我看到的另一个备选方案是这样定义lambda:

val ref: (Int) -> Any = { a.getItem(it) }

由于Kotlin 1.1,您可以使用:

val f = a::getItem


早期的Kotlin版本没有此功能,并且要求您每次都创建一个lambda,除了。

捕获引用还不受支持,但将来将支持使用lambda复制您的选项。从1.0开始,使用lambda是当前最好的方法,尽管它将在将来更改为@AndreyBreslav提及支持,但请在YouTrack中搜索此问题以获取更新:感谢提案链接。对于伴生对象的函数,似乎只有这种语法[与Kotlin 1.3]一起工作:
(ClassA)::function
ClassA.Companion::function
。第一个语法只能在Kotlin中使用,因此为了保证Java和Kotlin代码之间的一致性,如果需要在Java中引用第二个语法,最好使用第二个语法。
val f = a::getItem
list.forEach(myObject::myMethod)