引用 Kotlin 中特定实例的方法

2024-04-13

在 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 开始,您可以使用绑定可调用引用 https://github.com/Kotlin/KEEP/blob/master/proposals/bound-callable-references.md要做到这一点:

val f = a::getItem
list.forEach(myObject::myMethod)

早期的 Kotlin 版本没有此功能,并且要求您每次都创建 lambda,除了这些简单的案例 https://stackoverflow.com/questions/42496032/kotlin-function-reference/42496375#42496375.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

引用 Kotlin 中特定实例的方法 的相关文章

随机推荐