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. debian - docker依賴的aufs-tools源碼哪里可以找到啊?2. angular.js - angular內容過長展開收起效果3. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””4. docker - 各位電腦上有多少個容器啊?容器一多,自己都搞混了,咋辦呢?5. docker-compose 為何找不到配置文件?6. docker 下面創建的IMAGE 他們的 ID 一樣?這個是怎么回事????7. angular.js使用$resource服務把數據存入mongodb的問題。8. macos - mac下docker如何設置代理9. javascript - sublime快鍵鍵問題10. docker容器呢SSH為什么連不通呢?

網公網安備