gpt4 book ai didi

kotlin - 如何从数据类获取/设置任何字段的值? (在 Kotlin )

转载 作者:行者123 更新时间:2023-12-02 13:34:48 25 4
gpt4 key购买 nike

我想从Kotlin的数据类中获取值。
例如,我有数据类

data class DocData(
val i:Int=3,
val s:String="test",
val d:Double=0.2)

我想要得到这样的东西
fun checkTypesAndValues() {
val docData = DocData()
val fields = docData.javaClass.declaredFields
for (i in 0..fields.lastIndex) {
val f = fields[i]
when (f.type) {
is Int -> System.out.println(f.value)
is String -> System.out.println(f.value)
is Double -> System.out.println(f.value)
}
}
}

最佳答案

您可以使用Kotlin reflection来获取所有属性及其值,例如:

import kotlin.reflect.full.declaredMemberProperties

data class DocData(val i: Int = 3, val s: String = "test", val d: Double = 0.2)

fun main() {
val docData = DocData()
docData.javaClass.kotlin.declaredMemberProperties.forEach {
with(it) {
println("$returnType: $name = ${get(docData)}")
}
}
}

输出:
kotlin.Double: d = 0.2
kotlin.Int: i = 3
kotlin.String: s = test

您将需要添加 kotlin-reflect依赖项:
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.version}</version>
</dependency>

关于kotlin - 如何从数据类获取/设置任何字段的值? (在 Kotlin ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59017105/

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