kotlin能否將java 反射取到method轉換為高階函數?如果可以如何操作?
扔个三星炸死你
扔个三星炸死你 2017-06-23 09:13:40
0
1
716

kotlin能否將java 反射取到method轉換為高階函數?如果可以如何操作?
這裡只是舉個例子,實際執行會報錯。

class A { fun haveFun(s:String){ print(s); } } fun main(args: Array) { 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...

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!