gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:13:21 27 4
gpt4 key购买 nike

使用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.typeparam.classifierparam.type.jvmErasure等。我找到的最接近的是 param.type.jvmErasure.qualifiedName,它给了我一个带有KClass完全限定名称的String。但是我真的想要KClass。

这有可能吗?

最佳答案

您可以使用javaType KType 属性进行比较:

when (param.type.javaType) {
String::class.java -> println("String!")
Int::class.java -> println("Int!")
}

关于reflection - 如何获取Kotlin构造函数参数的KClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49542167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com