Подтвердить что ты не робот

Ссылка на метод конкретного экземпляра в Котлине

В Java 8 мы можем ссылаться на метод экземпляра класса. Вот пример

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

a - это экземпляр класса Adapter, который имеет метод Object getItem(int i).

Можем ли мы сделать то же самое в Котлине? Я пробовал такой же синтаксис без успеха. До сих пор мне удалось создать ссылку на метод расширения так:

val ref: Adapter.(Int) -> Any = Adapter::getItem

Но здесь мне все еще нужен экземпляр Adapter для его вызова. Другая переменная, которую я вижу, определяет лямбда следующим образом:

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

Ответ 1

Начиная с Kotlin 1.1, вы можете использовать связанные вызываемые ссылки, чтобы сделать это:

val f = a::getItem

list.forEach(myObject::myMethod)

Раньше версии Kotlin не имеют этой функции и требуют, чтобы вы делали лямбду каждый раз, за ​​исключением этих простых случаев.