我想从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)
}
}
}
答案 0 :(得分:1)
您可以使用Kotlin reflection来获取所有属性及其值,例如:
user_type
输出:
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