2017-05-12 5 views
1

Comment obtenir une référence de méthode au setter de propriétés sans utiliser kotlin-reflect?Référence de méthode à l'accesseur de propriété

Fondamentalement, si je vais écrire mon code de manière java, il est super simple

fun setValue(i: Int) = Unit 
val a: (Int) -> Unit = this::setValue 

Mais pour var value: Int je reçois

var value = 1 
val a: KMutableProperty0<Int> = this::value 

Répondre

1

Utilisez this::value.setter afin d'obtenir la référence setter.

1

this::value est une référence de propriété. Il renvoie un KMutableProperty. Pour obtenir le setter, vous aurez besoin du champ setter de KMutableProperty. Vous aurez donc besoin de ceci:

class C { 
    var field: Int = 1 
    fun getFieldSetter(): (Int) -> Unit{ 
     return this::field.setter 
    } 
}