Kotlin 对属性setter的方法引用

Kotlin 对属性setter的方法引用,kotlin,kotlin-reflect,Kotlin,Kotlin Reflect,如何在不使用kotlin reflect的情况下获取对属性setter的方法引用 基本上,如果我用java的方式编写我的代码,它会非常简单 fun setValue(i: Int) = Unit val a: (Int) -> Unit = this::setValue 但是对于var值:Int我得到 var value = 1 val a: KMutableProperty0<Int> = this::value var值=1 val a:KMutableProperty

如何在不使用kotlin reflect的情况下获取对属性setter的方法引用

基本上,如果我用java的方式编写我的代码,它会非常简单

fun setValue(i: Int) = Unit
val a: (Int) -> Unit = this::setValue
但是对于
var值:Int
我得到

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

使用
this::value.setter
获取setter引用。

this::value
是一个属性引用。它返回一个
KMutableProperty
。要获取setter,您需要
KMutableProperty
setter
字段。因此,您需要:

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

略短:只需使用
this::value::set

这是最好的答案,因为它不需要反射。