You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何通过双冒号运算符引用属性setter?

在Kotlin中引用Setter的方法

在Kotlin里,要像Java那样引用属性的setter其实很简单——你可以通过**可变属性的引用加上.set**来获取对应的setter函数引用,刚好能匹配你示例里的myFunction参数需求。

具体示例

先定义一个带可变属性的类:

class MyClass {
    var someVar: String = "default"
}

假设你的函数签名是这样的(和Java里的myMethod对应):

fun myFunction(
    getter: (MyClass) -> String,
    setter: (MyClass, String) -> Unit
) {
    val instance = MyClass()
    // 使用setter设置值
    setter(instance, "Kotlin is cool!")
    // 使用getter获取值并打印
    println(getter(instance))
}

调用的时候,直接用属性引用加.set来传递setter:

myFunction(MyClass::someVar, MyClass::someVar.set)

原理说明

  • 对于Kotlin的可变属性(var),MyClass::someVar是一个KMutableProperty1<MyClass, String>类型的属性引用,它本身已经包含了get和set的逻辑。
  • getter的引用直接用MyClass::someVar就可以,因为它可以自动适配(MyClass) -> String的函数类型(本质是调用属性的get方法)。
  • 而setter的话,需要通过.set来获取对应的函数引用,这个引用的类型正好是(MyClass, String) -> Unit,和Java里setter方法引用的作用完全一致。

如果是扩展属性或者其他场景,这个用法也同样适用,只要属性是可变的(var)就能通过.set拿到setter的函数引用。

内容的提问来源于stack exchange,提问作者Displee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:47:51