小编ljd*_*ljd的帖子

如何获取 Kotlin 构造函数参数的 KClass

使用 Kotlin 反射,我试图检查类的主构造函数的每个参数的 KClass。

给定一个像这样的简单数据类:

data class MyPerson(val name: String, val age: Int)
val modelClass = MyPerson::class
Run Code Online (Sandbox Code Playgroud)

我得到它的主要构造函数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
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不是有效的代码。我试过param.typeparam.classifierparam.type.jvmErasure和其他人。我发现的最接近的是param.type.jvmErasure.qualifiedName,它给了我一个带有 KClass 完全限定名称的字符串。但我真的很想要 KClass。

这可能吗?

reflection kotlin

5
推荐指数
2
解决办法
2163
查看次数

标签 统计

kotlin ×1

reflection ×1