В Java 8 мы можем ссылаться на метод экземпляра класса. Вот примерСсылка на метод конкретного экземпляра в Kotlin
Function1<Integer, Object> ref = a::getItem;
а является экземпляром класса Adapter
, который имеет метод Object getItem(int i)
.
Можем ли мы сделать то же самое в Котлине? Я пробовал такой же синтаксис без успеха. До сих пор я только был в состоянии создать ссылку на метод расширения, как так:
val ref: Adapter.(Int) -> Any = Adapter::getItem
Но здесь я все еще нужен экземпляр Adapter
, чтобы вызвать его. Другой alterantive я вижу, является определение лямбда, как это:
val ref: (Int) -> Any = { a.getItem(it) }
Захват ссылок еще не поддерживается, но будет поддерживаться в будущем –
Возможный дубликат [Kotlin: как передать функцию как параметр другому?] (Http://stackoverflow.com/questions/16120697/kotlin- как-к-pass-a-function-as-parameter-to-another) – Ram
Ваш вариант с использованием лямбда - это лучший в настоящее время метод, равный 1.0, хотя в будущем он будет изменяться, поскольку @AndreyBreslav упоминает –