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("呵呵呵");
}
}
}
仅有的幸福2017-06-23 09:15:40
反射不行的吧,不過對於單抽象方法的介面(SAM Type),Kotlin 在呼叫java 時,有一個SAM 轉換的機制,從而可以使用lambda ~
比如view.post{dosomething()},相當於把需要Runnable 介面的post 函數轉換成了一個高階函數。
更多:http://www.jianshu.com/p/6386...