我无法使用 createInstance()
. 例如: Foo::class.createInstance()
我有一个使用Kotlin 1.3.70的gradle项目。kotlin("jvm") version "1.3.70"
插件,并且有 implementation(kotlin("stdlib-jdk8"))
和 implementation(kotlin("reflect"))
在我的依赖关系中。
有谁知道为什么这个函数不见了?
我有一个函数,它接收一个 classType: KClass<Foo>
而我想创建一个 Foo
使用noarg构造函数。
解决方案:
要使用Java反射(如 newInstance()
)你需要 访问相应的Java类:
fun createInstance(classType: KClass<Foo>): Foo = classType.java.newInstance()
但Kotlin提供了 createInstance() 作为该用例的更好选择。
创建一个新的类的实例,调用一个构造函数,这个构造函数要么没有参数,要么所有参数都是可选的。
fun createInstance(classType: KClass<Foo>): Foo = classType.createInstance()