在 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 中获取泛型参数类