kotlin能否将java 反射取到method转换为高阶函数? 如果可以如何操作?
这里只是举一个例子,实际执行会报错。
class A {
fun haveFun(s:String){
print(s);
}
}
fun main(args: Array<String>) {
val forName = Class.forName("com.gwsoft.tests.A")
forName?.let {
val method = forName.getMethod("haveFun", String::class.java)
method?.let {
val fu=method as ((s:String)-> Unit)//这里并不行 会报java.lang.reflect.Method cannot be cast to kotlin.jvm.functions.Function1
fu("呵呵呵");
}
}
}
可以通过定义匿名函数赋值给一个函数变量:
不过注意示例代码中给的 haveFun 函数在 Java 中并不是 Static 的,因此反射时需要一个 receiver 来执行。