在Java 8中,我们可以引用Class'的方法。实例。这是一个例子
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) }
答案 0 :(得分:22)
从Kotlin 1.1开始,你可以使用bound callable references来做到这一点:
val f = a::getItem
list.forEach(myObject::myMethod)
早期的Kotlin版本没有此功能,除了these simple cases之外,每次都要求你制作一个lambda。