属性setter的方法引用

时间:2017-05-12 08:50:46

标签: kotlin kotlin-reflect

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

基本上,如果我用java方式编写代码,那就超级简单了

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

但对于var value: Int我正在

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

3 个答案:

答案 0 :(得分:4)

this::value是属性引用。它返回KMutableProperty。要获得设置器,您需要setter KMutableProperty字段。所以你需要这个:

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

答案 1 :(得分:2)

使用this::value.setter以获取setter参考。

答案 2 :(得分:0)

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