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

如何在Kotlin中获取KProperty1对应的K类类型?

在Kotlin中获取KProperty1对应的所属类类型

当然可以获取KProperty1<K, V>对应的K类类型。以你给出的示例为例:

val kProperty1: KProperty1<User, Long> = User::id

以下是两种常用的实现方式:

  • 通过owner属性
    KProperty1继承自CallableReference,对于类成员属性而言,owner属性直接指向该属性所属的KClass。代码示例:
// 强转为具体的User类类型
val userClass = kProperty1.owner as KClass<User>
// 或转为通配符类型,适用于不需要明确具体类的场景
val userClass = kProperty1.owner as KClass<*>
  • 通过receiverParameter获取
    KProperty1代表类的成员属性,需要接收类实例作为参数,它的receiverParameter属性包含了接收者的参数信息,通过type.classifier可提取对应的KClass:
val userClass = kProperty1.receiverParameter.type.classifier as KClass<User>

这种方式从接收者类型的角度获取所属类,若处理的是扩展属性而非类成员属性,该方式比owner属性更可靠(扩展属性的owner指向扩展所在类,而非接收者类)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:39:53