首页 > 解决方案 > 如何在 Kotlin 中使用 getInstance?

问题描述

我无法使用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 构造函数的实例。

标签: kotlinkotlin-reflect

解决方案


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

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

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

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

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

推荐阅读