Kotlin getValue用法及代码示例

本文方法及代码示例基于Kotlin 2.1.20 Released

getValue 所在包 kotlin.getValue,其相关用法介绍如下:

用法一

kotlin 复制代码
operator fun <V> KProperty0<V>.getValue(
    thisRef: Any?, 
    property: KProperty<*>
): V

一个扩展运算符,允许将类型为 V 的只读属性委托给对类型为 V 的属性或其子类型的属性引用。

接收者

对 V 类型或其子类型的只读或可变属性的属性引用。引用没有接收器,即它引用顶级属性或将接收器绑定到它。

代码示例:

kotlin 复制代码
class Login(val username: String)
val defaultLogin = Login("Admin")
val defaultUsername by defaultLogin::username
// equivalent to
val defaultUserName get() = defaultLogin.username

用法二

kotlin 复制代码
operator fun <T, V> KProperty1<T, V>.getValue(
    thisRef: T, 
    property: KProperty<*>
): V

一个扩展运算符,允许将类型为 V 的只读成员或扩展属性委托给对类型为 V 或其子类型的成员或扩展属性的属性引用。

接收者

对 V 类型或其子类型的只读或可变属性的属性引用。该引用具有类型为 T 的未绑定接收器。

代码示例:

kotlin 复制代码
class Login(val username: String)
val Login.user by Login::username
// equivalent to
val Login.user get() = this.username

用法三

kotlin 复制代码
operator fun <T> Lazy<T>.getValue(
    thisRef: Any?, 
    property: KProperty<*>
): T

将 T 类型的只读属性委托给 Lazy 的实例的扩展。

此扩展允许使用 Lazy 实例进行属性委托:val property: String by lazy { initializer }

相关方法

相关推荐
熊猫钓鱼>_>6 小时前
Kotlin Multiplatform for OpenHarmony 实战:为 Reaktive 实现响应式原语适配(完整版 · 含摘要目录与技术图表)
华为·kotlin·大模型·ai编程·harmonyos·适配·reaktive
五彩小白7 小时前
自回归和上下文
android
事圆则缓9 小时前
Android 多渠道打包实战:Product Flavors、签名、AAB 与发包校验
android
树下困觉眯11 小时前
View绘制流程学习--获取WindowManager的三种方式
android·系统架构·view design
vilya12 小时前
我怎么给手机 GUI Agent 做双通道感知:无障碍树为主,投屏像素兜底
android·人工智能
李游Leo12 小时前
HarmonyOS 7 InsightBoard 多形态适配实录 06:ArkUI × 多设备回归:布局抖动、监听释放与全形态验收【鸿蒙心迹】
回归·kotlin·harmonyos
点燃大海13 小时前
手机给平板当键盘?
kotlin
李子红了时14 小时前
阿狸舞台APP(安卓端手机EncFS解密+压缩包解压+视频播放)
android·音视频
事圆则缓14 小时前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
其实防守也摸鱼14 小时前
DeepSeek Harness 开源贡献手记:从 Issue 到 Merge 的完整旅程
android·数据库·学习·ai·oracle·自动化