如何从包类名字符串中获取Kotlin KClass?

如何从包类名字符串中获取Kotlin KClass?,kotlin,Kotlin,如果我有一个字符串,比如“mypackage.MyClass”,我如何在运行时(从JVM)获取相应的KClass。您可以使用Java的方法获取类实例类.forName,然后使用.kotlin扩展属性将其转换为KClass。代码如下所示: val kClass = Class.forName("mypackage.MyClass").kotlin 在某些情况下,可能会添加更直接的方法。该问题位于请注意,这不适用于原始类型,如char。它也不适用于自动转换的类型,如java.util.List、k

如果我有一个字符串,比如
“mypackage.MyClass”
,我如何在运行时(从JVM)获取相应的
KClass

您可以使用Java的方法获取
实例
类.forName
,然后使用
.kotlin
扩展属性将其转换为
KClass
。代码如下所示:

val kClass = Class.forName("mypackage.MyClass").kotlin

在某些情况下,可能会添加更直接的方法。该问题位于

请注意,这不适用于原始类型,如
char
。它也不适用于自动转换的类型,如java.util.List、kotlin.collections.Collection、kotlin.collections.Iterable、kotlin.Any等。要获取这些类型的KClass,您需要使用java对应项调用Class.forName()(java.util.List、java.util.Collection、java.lang.Iterable、java.lang.Object)。这显然不是一个详尽的列表。