我正在尝试设置一个函数,该函数接受泛型类,该类又通过反射调用该类中的方法。下面的代码编译,但是当我运行它时,我收到此错误:
java.lang.IllegalArgumentException: Callable expects 2 arguments, but 1 were provided.
为什么Kotlin声称应该有2个参数,当方法只需要一个?争论应该是什么?
import kotlin.reflect.full.memberFunctions
class myClass {
fun test(d: String) : String {
return d
}
}
class test {
fun <T: Any>ProcessStuff(
d : T
) {
val myClass = d.let { it::class }
var f3 = myClass.memberFunctions.find { it.name == "test"}!!
println (f3.call ("Hello World"))
}
}
fun main(args : Array<String>) {
val c = myClass()
val t = test()
t.ProcessStuff(c)
}
答案 0 :(得分:3)
您没有在实例上调用该方法(第一个参数)。它的工作原理如下:
val myClassInstance = myClass()
println(f3.call(myClassInstance, "Hello World"))