kotlin能否将java 反射取到method转换为高阶函数? 如果可以如何操作?
问题描述
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('呵呵呵');} }}
问题解答
回答1:反射不行的吧,不过对于单抽象方法的接口(SAM Type),Kotlin 在调用 java 时,有一个 SAM 转换的机制,从而可以使用 lambda ~比如 view.post{dosomething()},相当于把需要 Runnable 接口的 post 函数转换成了一个高阶函数。
更多: http://www.jianshu.com/p/6386...
相关文章:
1. css3 - 微信前端页面遇到的transition过渡动画的bug2. 网页爬虫 - 关于Python的编码与解码问题3. docker网络端口映射,没有方便点的操作方法么?4. javascript - vue 父子组件传递数据5. html5上的ICON一般去哪里找?6. selenium-selenium-webdriver - python 将当前目录加入到 环境变量7. css - input间的间距和文字上下居中8. MYSQL 根据两个字段值查询 但两个值的位置可能是互换的,这个怎么查?9. css - 有没有什么办法用背景色把部分border给遮挡呢?10. css3 - 微信小程序如何把radio改成2个选择按钮的样式

网公网安备