Java 8では、クラスのインスタンスのメソッドへの参照を持つことができます。ここに例があります
_Function1<Integer, Object> ref = a::getItem;
_
aは、メソッドObject getItem(int i)
を持つクラスAdapter
のインスタンスです。
Kotlinでも同じことができますか?私は成功せずに同じ構文を試しました。これまでのところ、次のような拡張メソッド参照を作成することしかできませんでした。
_val ref: Adapter.(Int) -> Any = Adapter::getItem
_
しかし、ここでは、それを呼び出すためにAdapter
のインスタンスが必要です。私が見る他の代替案は、このようなラムダを定義しています:
_val ref: (Int) -> Any = { a.getItem(it) }
_
Kotlin 1.1以降では、 バインドされた呼び出し可能な参照 を使用してそれを行うことができます:
val f = a::getItem
list.forEach(myObject::myMethod)
以前のKotlinバージョンにはこの機能がなく、 これらの単純なケース を除いて毎回ラムダを作成する必要があります。