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

使用kotlin.reflect获取数组元素对应变量名失败,求助解决方法

问题原因与解决方法

你遇到的问题核心在于两点:

  1. 数组all里存储的是变量a、b、c的值("aa"、"bb"、"cc"),而非变量本身的引用,遍历拿到的i只是字符串值,根本关联不到原变量。
  2. ::i试图引用循环参数i,但Kotlin不支持对循环参数使用这种属性引用语法,所以直接报错。

解决方案1:用Map关联变量名与值

如果不需要反射,最简单的方式是直接用Map存储变量名和对应的值,遍历的时候同时拿到名称和值:

val a = "aa"
val b = "bb"
val c = "cc"
val all = mapOf(
    "a" to a,
    "b" to b,
    "c" to c
)

for ((name, value) in all) {
    println("$name = $value")
}

解决方案2:用属性引用数组存储变量引用

如果一定要用反射相关的方式,可以直接把变量的属性引用存入数组,这样遍历的时候就能直接获取变量名和对应的值:

val a = "aa"
val b = "bb"
val c = "cc"
val all = arrayOf(::a, ::b, ::c)

for (prop in all) {
    println("${prop.name} = ${prop.get()}")
}

这里::a是变量a的属性引用,类型为KProperty0<String>,通过prop.name可以拿到变量名,prop.get()可以获取变量当前的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:27:04