Kotlin 对属性setter的方法引用
如何在不使用kotlin reflect的情况下获取对属性setter的方法引用 基本上,如果我用java的方式编写我的代码,它会非常简单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
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
这是最好的答案,因为它不需要反射。