在Java 8中,我们可以引用Class实例的方法.这是一个例子
Function1<Integer, Object> ref = a::getItem;
Run Code Online (Sandbox Code Playgroud)
a是Adapter
具有该方法的类的实例Object getItem(int i)
.
我们可以在Kotlin做同样的事吗?我尝试了相同的语法但没有成功.到目前为止,我只能创建一个扩展方法引用,如下所示:
val ref: Adapter.(Int) -> Any = Adapter::getItem
Run Code Online (Sandbox Code Playgroud)
但是在这里我仍然需要一个实例Adapter
来调用它.我看到的另一个变化是定义一个像这样的lambda:
val ref: (Int) -> Any = { a.getItem(it) }
Run Code Online (Sandbox Code Playgroud)
hot*_*key 22
从Kotlin 1.1开始,您可以使用绑定的可调用引用来执行此操作:
val f = a::getItem
Run Code Online (Sandbox Code Playgroud)
list.forEach(myObject::myMethod)
Run Code Online (Sandbox Code Playgroud)
早期的Kotlin版本没有此功能,除了这些简单的情况外,每次都要求你制作一个lambda .
归档时间: |
|
查看次数: |
6292 次 |
最近记录: |