gpt4 book ai didi

kotlin - 如何在 Kotlin 中获取变量的名称?

转载 作者:行者123 更新时间:2023-12-04 22:02:51 25 4
gpt4 key购买 nike

我的应用程序中有一个具有很多属性的 Kotlin 类,我想要构建的是一种将变量名称存储在字典中的方法。字典是这样的:

HashMap<String, Pair<Any, Any>>()

这样做的目的是存储对某个属性所做的更改,我将变量的名称存储为键,并在 Pair 中存储旧值和新值。为了通知更改,我使用观察者模式。因此,每当从属性调用 setter 时,都会通知更改并将其存储到字典中。

下面的代码导致以下结果:
var person = Person("Harry", 44)
person.age = 45
HashMap("age", (44, 45))
现在我只是将变量名称硬编码为字符串,所以我的问题是:

如何在 Kotlin 中动态获取变量的名称?

我在 Java 中看到了同样的问题: Java Reflection: How to get the name of a variable?

还有一些关于同一主题的其他问题,声称这是不可能的: Get the name property of a variable

我可以理解无法获得变量的名称,因为简单的编译器没有该信息,但我仍然很想知道其他人是否有解决此问题的方法。

最佳答案

如 Kotlin 中所述 documentation about Reflection :

val x = 1

fun main() {
println(::x.get())
println(::x.name)
}

表达式 ::x计算结果为 KProperty<Int> 类型的属性对象,这允许我们使用 get() 读取它的值或使用 name 检索属性名称属性(property)。

关于kotlin - 如何在 Kotlin 中获取变量的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53188226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com