引用 Kotlin 中特定实例的方法

Reference to method of a particular instance in Kotlin

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

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

a 是具有方法 Object getItem(int i).

的 class Adapter 的一个实例

我们可以在 Kotlin 中做同样的事情吗?我尝试了相同的语法但没有成功。到目前为止,我只能像这样创建一个扩展方法参考:

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

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

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

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

val f = a::getItem

list.forEach(myObject::myMethod)

较早的 Kotlin 版本没有此功能,除了 .

之外每次都需要您创建一个 lambda