4

如何在不使用 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
4

3 回答 3

4

this::value是一个属性引用。它返回一个KMutableProperty. 要获得 setter,您将需要setter. KMutableProperty所以你需要这个:

class C {
    var field: Int = 1
    fun getFieldSetter(): (Int) -> Unit{
        return this::field.setter
    }
}
于 2017-05-12T09:54:17.963 回答
3

用于this::value.setter获取设置器参考。

于 2017-05-12T09:54:16.223 回答
1

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

于 2021-01-27T16:26:08.530 回答