kotlin中将data对象转为map储存, 变量名为键,变量值为值
时间: 2023-08-11 17:04:34 浏览: 200
在 Kotlin 中,我们可以通过反射的方式获取一个 data class 的属性列表,并将属性名和属性值存储到一个 Map 对象中。下面是一个示例代码:
```kotlin
data class Person(val name: String, val age: Int)
fun main() {
val person = Person("John", 30)
val map = mutableMapOf<String, Any?>()
val properties = Person::class.members.filterIsInstance<KProperty1<Person, *>>()
for (property in properties) {
map[property.name] = property.get(person)
}
println(map) // 输出:{name=John, age=30}
}
```
在上面的代码中,我们首先定义了一个 `Person` 类,然后创建了一个 `Person` 对象。接着,我们定义了一个空的 `MutableMap` 对象 `map`,用于存储属性名和属性值。使用反射,我们获取了 `Person` 类的属性列表,并将类型为 `KProperty1` 的属性添加到一个列表中。最后,我们遍历这个列表,将每个属性的名称和值存储到 `map` 中,并输出结果。
需要注意的是,由于 Kotlin 的数据类会自动生成一些方法,比如 `equals()`、`hashCode()`、`toString()` 等,所以我们在使用反射获取属性列表时,需要使用 `filterIsInstance<KProperty1<Person, *>>()` 进行过滤,只获取属性的信息。
阅读全文