参考Kotlin中特定实例的方法

时间:2015-01-19 10:22:42

标签: lambda kotlin

在Java 8中,我们可以引用Class'的方法。实例。这是一个例子

Function1<Integer, Object> ref = a::getItem;

a是具有Adapter方法的类Object getItem(int i)的实例。

我们可以在Kotlin做同样的事吗?我尝试了相同的语法但没有成功。到目前为止,我只能创建一个扩展方法引用,如下所示:

val ref: Adapter.(Int) -> Any = Adapter::getItem

但是在这里我仍然需要一个Adapter的实例来调用它。我看到的另一个变化是定义像这样的lambda:

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

1 个答案:

答案 0 :(得分:22)

从Kotlin 1.1开始,你可以使用bound callable references来做到这一点:

val f = a::getItem

list.forEach(myObject::myMethod)

早期的Kotlin版本没有此功能,除了these simple cases之外,每次都要求你制作一个lambda。