将Class对象转换为Map

时间:2019-03-06 08:47:54

标签: java android kotlin

我有一堂课,充满了String之类的

data class TestClass (
var par1: String?,
var par2: String?,
var par3: String?
)

我想将其转换为Key和Value为String的Map。在Kotlin中做到这一点的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用Kotlin反射来实现,将kotlin-reflect库添加到应用程序类路径中,然后使用类似的代码:


fun TestClass.asMap() = this::class.declaredMemberProperties
        .map {
          it as KProperty1<TestClass, Any?>
          it.name to it.get(this).toString()
        }.toMap()

我们将declaredMemberProperties元素从星形投影转换为带有Any?的类型。由于清除了JVM类型,因此该情况​​未经检查,但仍然是必需的。