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

Jos*_*sen 24 kotlin

如果我有一个类似的字符串"mypackage.MyClass",我如何KClass在运行时(从JVM)获得相应的?

Kir*_*man 40

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

val kClass = Class.forName("mypackage.MyClass").kotlin
Run Code Online (Sandbox Code Playgroud)

在某些时候可以添加更直接的方式.问题就在这里

  • 请注意,这不适用于像`char`这样的原始类型. (2认同)
  • 它也不适用于自动转换的类型,如 java.util.List、kotlin.collections.Collection、kotlin.collections.Iterable、kotlin.Any 等。要获取这些类型的 KClass,您需要调用 Class .forName() 及其 Java 对应项(java.util.List、java.util.Collection、java.lang.Iterable、java.lang.Object)。这显然不是一个详尽的清单。 (2认同)