【发布时间】:2018-03-28 18:55:48
【问题描述】:
使用 Kotlin 反射,我试图检查类的主构造函数的每个参数的 KClass。
给定一个像这样的简单数据类:
data class MyPerson(val name: String, val age: Int)
val modelClass = MyPerson::class
我得到了它的主要构造函数val primaryConstructor = modelClass.primaryConstructor。
对于每个参数,我想检查它的类(是 Kotlin.String、Kotlin.Int 等)。像这样的:
for (param in primaryConstructor.parameters) {
when(param.type) {
is Kotlin.String -> // do string thing
is Kotlin.Int -> // do int thing
}
很遗憾,这不是有效代码。我试过param.type、param.classifier、param.type.jvmErasure 等。我找到的最接近的是param.type.jvmErasure.qualifiedName,它给了我一个带有KClass 完全限定名称的字符串。但我真的很想要 KClass。
这可能吗?
【问题讨论】:
标签: reflection kotlin