使用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。
这有可能吗?