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

如何通过Kotlin Symbol Processing(KSP)读取类中声明的变量值?

关于Kotlin Symbol Processing API读取变量值的问题

首先明确:Kotlin Symbol Processing API(KSP)无法读取类中变量的运行时值。原因很简单——KSP是编译阶段的工具,此时代码还未执行,变量的实际运行时值只有在程序运行时才会生成,编译期根本无法获取。

不过有个例外:如果变量是用const val声明的编译期常量,KSP可以通过KSPropertyDeclaration的constantValue方法获取它的常量值。

再看你给出的代码片段:

resolver.getDeclarationsFromPackage("com.example")
            .filter { it is KSClassDeclaration }
            .iterator().forEach {
                val cls = it as KSClassDeclaration
                cls.getDeclaredProperties().first()
                }

这段代码的作用是从com.example包下筛选出类声明,然后获取类中第一个声明的属性,但它只能拿到该属性的KSPropertyDeclaration对象——通过这个对象你能获取属性的名称、类型、修饰符(val/var)、注解等编译期元数据,但拿不到属性的实际运行时值。

举个具体例子:

class User {
    const val CONST_NAME = "Alice" // 编译期常量,KSP可获取值
    val name = "Bob" // 普通val,KSP无法获取"Bob"这个运行时值
    var age = 20 // 普通var,KSP无法获取20这个运行时值
}

对于CONST_NAME,你可以通过ksProperty.constantValue拿到"Alice";但name和age的实际值,KSP完全无法获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:02:07