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. javascript - npm run build后调用api返回index.html2. vim - docker中新的ubuntu12.04镜像,运行vi提示,找不到命名.3. docker-machine添加一个已有的docker主机问题4. docker内创建jenkins访问另一个容器下的服务器问题5. angular.js - 怎样实现点击 “分数” 后按分数升序和降序排列?6. angular.js - angularjs $q的promise 怎么解决嵌套的ajax问题?7. docker-compose 为何找不到配置文件?8. 主从复制 - MySQL 主从延迟 300s 以上,求大神解答9. mac里的docker如何命令行开启呢?10. javascript - webpack 使用babel转es6的时候出现了问题,但是webpack没有报错!!急急急

网公网安备