lambda - 引用 Kotlin 中特定实例的方法

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

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) }

最佳答案

从 Kotlin 1.1 开始,您可以使用 bound callable references这样做:

val f = a::getItem

list.forEach(myObject::myMethod)

早期的 Kotlin 版本没有此功能,并且要求您每次都创建一个 lambda,these simple cases 除外.

https://stackoverflow.com/questions/28022388/

相关文章:

kotlin - 警告 : API 'variant.getPackageLibrary()' is

kotlin - 使用 Gradle 和 Kotlin 构建自执行 JAR

java - Kotlin:使用 lambda 代替函数式接口(interface)?

interface - 如何创建接口(interface)的匿名实现?

android - 当列名相同时,如何表示与 Android Room 的 "many to man

kotlin - kotlin 中的 Dagger 2 静态提供程序方法

kotlin - 意外覆盖 : The following declarations have th

generics - 如何在 Kotlin 中获取泛型参数类

java - 如何在 Kotlin 中组合 Intent 标志

arrays - Kotlin中数据类的equals方法