Référence à la méthode d’une instance particulière dans Kotlin

Dans Java 8, nous pouvons avoir une référence à une méthode d’une instance de Class. Voici un exemple

Function1 ref = a::getItem; 

a est une instance de la classe Adapter qui possède la méthode Object getItem(int i) .

Pouvons-nous faire la même chose à Kotlin? J’ai essayé la même syntaxe sans succès. Jusqu’à présent, je n’ai pu créer qu’une référence de méthode d’extension comme ceci:

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

Mais ici, j’ai encore besoin d’une instance d’un Adapter pour l’invoquer. L’autre alternative que je vois est la définition d’un lambda comme ceci:

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

Depuis Kotlin 1.1, vous pouvez utiliser les références appelables liées pour faire cela:

 val f = a::getItem 

 list.forEach(myObject::myMethod) 

Les versions antérieures de Kotlin n’ont pas cette fonctionnalité et vous obligent à créer un lambda à chaque fois, sauf pour ces cas simples .