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