我如何在 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 缓存删除,现在它似乎可以正常工作了。
我无法使用 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 缓存删除,现在它似乎可以正常工作了。