kotlin - 如何在 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 构造函数的实例。
解决方案
要使用 Java 反射(如newInstance()
),您需要访问相应的 Java 类:
fun createInstance(classType: KClass<Foo>): Foo = classType.java.newInstance()
但是 Kotlin 提供了createInstance()作为该用例的更好选择:
创建类的一个新实例,调用一个没有参数或所有参数都是可选的构造函数。
fun createInstance(classType: KClass<Foo>): Foo = classType.createInstance()
推荐阅读
- python-3.x - TensorFlow keras_learning_phase:0
- google-bigquery - BigQuery - 当需要一个元素时,ARRAY_ARG 和 UNNEST 在同一通道上
- powershell - 您可以在powershell中从具有多个数据行的变量动态构建哈希表吗?
- reactjs - 使用 React DropZone 但回调不更新
- django - 未捕获的类型错误:无法在 Object.success 处读取未定义的属性“字段”
- azure - 从 Azure 函数调用 Ms Graph 时会产生什么费用?
- sql - 连续列总和基于 sql server 中的另一列
- visual-studio-app-center - appcenter 将他们的日志存储在本地存储的什么位置?
- laravel - 服务器缓存文件
- python - 具有自适应窗口大小的移动平均