引用 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
在 Java 8 中,我们可以引用 Class' 实例的方法。这是一个例子
Function1<Integer, Object> ref = a::getItem;
a 是具有方法 Object getItem(int i)
.
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 版本没有此功能,除了