2017-05-12 6 views
1

Wie kann ich eine Methodenreferenz zu Property Setter erhalten, ohne kotlin-reflect zu verwenden?Methodenverweis auf Property Setter

Grundsätzlich, wenn ich meinen Code in Java Art und Weise schreiben werde es ist super einfach

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

Aber für var value: Int Ich erhalte

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

Antwort

1

Verwenden this::value.setter um die Setter-Referenz zu erhalten.

1

this::value ist eine Eigenschaft Referenz. Es gibt eine KMutableProperty zurück. Um den Setter zu erhalten, benötigen Sie das Feld setter von KMutableProperty. Sie brauchen das also:

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