0

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

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

有谁知道为什么这个功能似乎不见了?

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

4

2 回答 2

0

要使用 Java 反射(如newInstance()),您需要访问相应的 Java 类

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

但是 Kotlin 提供了createInstance()作为该用例的更好选择:

创建类的一个新实例,调用一个没有参数或所有参数都是可选的构造函数。

fun createInstance(classType: KClass<Foo>): Foo = classType.createInstance()
于 2020-04-23T19:14:38.663 回答
0

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

于 2020-04-23T22:12:19.760 回答