In Java 8 possiamo avere un riferimento a un metodo di un'istanza di Classe. Ecco un esempioRiferimento al metodo di una particolare istanza in Kotlin
Function1<Integer, Object> ref = a::getItem;
a è un'istanza della classe Adapter
che ha il metodo Object getItem(int i)
.
Possiamo fare lo stesso in Kotlin? Ho provato la stessa sintassi senza successo. Finora sono stato solo in grado di creare un metodo di riferimento di estensione in questo modo:
val ref: Adapter.(Int) -> Any = Adapter::getItem
Ma qui ho ancora bisogno di un'istanza di un Adapter
per invocarlo. L'altro alterantive che vedo è la definizione di un lambda come questo:
val ref: (Int) -> Any = { a.getItem(it) }
I riferimenti di acquisizione non sono ancora supportati, ma saranno supportati in futuro –
possibile duplicato di [Kotlin: come passare una funzione come parametro a un altro?] (Http://stackoverflow.com/questions/16120697/kotlin- how-to-pass-a-function-as-parameter-to-another) – Ram
L'opzione che utilizza un lambda è il miglior metodo attuale di -0, sebbene cambierà in futuro per essere supportato come @AndreyBreslav cita –