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 - 用表单提交两个时间段请求后台返回对应数据时出现的一些问题!2. dockerfile - [docker build image失败- npm install]3. docker内创建jenkins访问另一个容器下的服务器问题4. java中关于直接插入排序遇到的问题。5. javascript - c#如何向js传值6. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?7. docker gitlab 如何git clone?8. node.js - mongoDB使用$gte的问题9. java - mybatis怎么实现在数据库中有就修改,没有就添加10. 我在centos容器里安装docker,也就是在容器里安装容器,报错了?
