【发布时间】:2017-03-21 02:15:30
【问题描述】:
我有一段 Kotlin 代码试图使用 Java 的 Reflection 包反射调用一个方法:
val arguments = arrayOfNulls<Any>(numberOfParams)
// Populate arguments
try {
fooMethod.invoke(fooClass, arguments)
} catch (e: Exception) {
// Panic
}
它不断失败,并出现“参数数量错误”的 IllegalArgumentException。
我对该问题进行了一些阅读,似乎invoke() 方法的扩展运算符拒绝解压缩Array<Any>,因为它不等于Object[]。我可以尝试使用来自 Java 的标准 Object[],但这让我想知道,这是唯一的方法吗?这是最好的方法吗?有什么方法可以用 Kotlin 的类型做到这一点?
在 Kotlin 中实现我想要的最典型的方式是什么?
【问题讨论】:
-
请检查此答案是否有帮助:(link)
标签: reflection kotlin