我如何在 Kotlin 中使用 getInstance?

How can I use getInstance in Kotlin?

我无法使用 createInstance()。例如,Foo::class.createInstance()

我有一个使用 Kotlin 1.3.70 kotlin("jvm") version "1.3.70" 插件的 gradle 项目。在我的依赖项中有 implementation(kotlin("stdlib-jdk8"))implementation(kotlin("reflect"))

有谁知道为什么似乎缺少此功能?

我有一个接收 classType: KClass<Foo> 的函数,我想使用 noarg 构造函数创建 Foo 的实例。

要使用 Java 反射(如 newInstance()),您需要 access the corresponding Java class:

fun createInstance(classType: KClass<Foo>): Foo = classType.java.newInstance()

但 Kotlin 提供 createInstance() 作为该用例的更好替代方案:

Creates a new instance of the class, calling a constructor which either has no parameters or all parameters of which are optional.

fun createInstance(classType: KClass<Foo>): Foo = classType.createInstance()

我更新了 Kotlin 插件版本并通过 gradle 缓存删除,现在它似乎可以正常工作了。