如何在不使用 kotlin-reflect 的情况下获取对属性设置器的方法引用?
基本上,如果我用 java 方式编写代码,那就超级简单了
fun setValue(i: Int) = Unit
val a: (Int) -> Unit = this::setValue
但因为var value: Int
我得到
var value = 1
val a: KMutableProperty0<Int> = this::value
如何在不使用 kotlin-reflect 的情况下获取对属性设置器的方法引用?
基本上,如果我用 java 方式编写代码,那就超级简单了
fun setValue(i: Int) = Unit
val a: (Int) -> Unit = this::setValue
但因为var value: Int
我得到
var value = 1
val a: KMutableProperty0<Int> = this::value
this::value
是一个属性引用。它返回一个KMutableProperty
. 要获得 setter,您将需要setter
. KMutableProperty
所以你需要这个:
class C {
var field: Int = 1
fun getFieldSetter(): (Int) -> Unit{
return this::field.setter
}
}
用于this::value.setter
获取设置器参考。
略短:只需使用this::value::set