Kotlin-KType的KClass <*>

时间:2019-06-20 12:51:41

标签: kotlin reflection

在Kotlin中,我可以像这样从KType获得KClass<*>

Int::class.createType()
  

kotlin.Int

如何反向执行并从代表KClass<Int>的{​​{1}}获得KType

1 个答案:

答案 0 :(得分:2)

您可以为此使用KType.classifier

val intType : KType = Int::class.createType()
val intClassifier : KClassifier? = intType.classifier
assertEquals(Int::class, intClassifier) // true

请注意,从1.3.40开始,您还可以(至少在JVM上)使用实验性的typeOf<Int>()来获取KType。您可能想看看1.3.40-announcement,看看这是否对您有用。

谈到JVM:在JVM上,您也可以使用KType.jvmErasure来获取实际的类,就像注释中指出的marstran一样。