在Java8中,我们可以引用类实例的方法.这里有一个例子

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

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

Can we do the same in Kotlin? I tried the same syntax without success. So far I was only able to create an extension method reference like so:

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)

Earlier Kotlin versions don't have this feature and require you to make a lambda every time except for these simple cases.

Kotlin相关问答推荐

在没有外部 map 的情况下转换列表项

用浮点数或十进制数给出错误答案的阶乘计算

Kotlin和JavaFX:绑定行为奇怪

在Jetpack Compose中创建波浪式文本动画:顺序中断问题

如何在操作系统版本上正确获取Room数据库的路径>;=26 sdk?

如何检测一个值是否是Kotlin中的枚举实例?

使函数同时挂起和取消挂起

为什么使用 return instance ?: synchronized(this) { instance ?: PreferenceParameterState(context) } 时无法获得单例?

为何Kotlin标准库中的AND和OR函数不能像&&和||一样进行短路运算?

为什么 <= 可以应用于 Int 和 Long,而 == 不能?

ActivityResultContracts TakePicture 结果总是返回 false

对列表中数字的子集求和

Kotlin 静态函数:伴生对象,@JvmStatic @JvmField

如何将 kotlin 集合作为 varagrs 传递?

如何使用 Coil 从 URL 获取位图?

Android Room - error: Cannot figure out how to save this field into database

片段内的 Kotlin 按钮 onClickListener 事件

TypeConverter()在Android的TypeConverter错误中具有私有访问权限

使用 rxbinding 时我应该取消订阅吗?

使用 Moshi/Retrofit2 访问深度嵌套的 JSON 数组