Reference to method of a particular instance in Ko

2019-01-11 02:53发布

问题:

In Java 8 we can have a reference to a method of a Class' instance. Here's an example

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

a is an instance of the class Adapter that has the method Object getItem(int i).

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

But here I still need an instance of an Adapter to invoke it. The other alterantive I see is defining a lambda like this:

val ref: (Int) -> Any = { a.getItem(it) }

回答1:

Since Kotlin 1.1, you can use bound callable references to do that:

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.



标签: lambda kotlin