国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

kotlin能否將java 反射取到method轉(zhuǎn)換為高階函數(shù)? 如果可以如何操作?

瀏覽:107日期:2023-10-28 09:01:21

問題描述

kotlin能否將java 反射取到method轉(zhuǎn)換為高階函數(shù)? 如果可以如何操作?這里只是舉一個(gè)例子,實(shí)際執(zhí)行會(huì)報(bào)錯(cuò)。

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)//這里并不行 會(huì)報(bào)java.lang.reflect.Method cannot be cast to kotlin.jvm.functions.Function1 fu('呵呵呵');} }}

問題解答

回答1:

反射不行的吧,不過對(duì)于單抽象方法的接口(SAM Type),Kotlin 在調(diào)用 java 時(shí),有一個(gè) SAM 轉(zhuǎn)換的機(jī)制,從而可以使用 lambda ~比如 view.post{dosomething()},相當(dāng)于把需要 Runnable 接口的 post 函數(shù)轉(zhuǎn)換成了一個(gè)高階函數(shù)。

更多: http://www.jianshu.com/p/6386...

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 淳化县| 汝阳县| 乌拉特前旗| 巴彦淖尔市| 康乐县| 连平县| 南江县| 兴和县| 苏尼特右旗| 兰坪| 青河县| 英山县| 常熟市| 靖远县| 从化市| 招远市| 达尔| 民权县| 久治县| 抚宁县| 龙井市| 恩平市| 淅川县| 新蔡县| 宜丰县| 五莲县| 乐昌市| 安达市| 新蔡县| 乌海市| 门头沟区| 运城市| 鄂温| 长子县| 昌吉市| 东莞市| 习水县| 财经| 塔河县| 东光县| 当阳市|