如何从数据类获取/设置任何字段的值? (在科特林)

时间:2019-11-24 11:19:59

标签: kotlin

我想从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)
        }
    }
}

1 个答案:

答案 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