日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Kotlin中的接口回调

發(fā)布時(shí)間:2025/4/5 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kotlin中的接口回调 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java的接口回調(diào)相信大家都用的相當(dāng)熟練。不過轉(zhuǎn)戰(zhàn)到Kotlin該怎么寫接口回調(diào)?
本文你會(huì)學(xué)到單參數(shù)回調(diào),多參數(shù)回調(diào)的寫法,直接上代碼;

/*** 文件:Test* 時(shí)間:2018/8/21.* 備注:*/ class Test:AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)var mathUtlils = MathUtils()println("開始計(jì)算")mathUtlils.getResult()mathUtlils.setListen {println("計(jì)算的結(jié)果 $it")}} } /*** 文件:TestDemo* 時(shí)間:2018/8/21.* 備注:*/ class MathUtils {private lateinit var listen: ((Int) -> Unit)fun setListen(listen: ((Int) -> Unit)) {this.listen = listen}fun getResult() {println("經(jīng)過一系列耗時(shí)運(yùn)算獲得結(jié)果")var sum = 200listen.invoke(sum)} }

上面的邏輯就是Test需要一個(gè)計(jì)算結(jié)果來自于MathUtils,而Test不關(guān)心計(jì)算的過程,只需要這個(gè)計(jì)算的結(jié)果。我們很自然的就是想到了接口回調(diào)。

我們一句句理解這句話

private lateinit var listen: ((Int) -> Unit)

這里的lateinit就是稍后初始化 listen變量的屬性是 ((Int) -> Unit)

意思就是listen是個(gè)函數(shù)類型變量 入?yún)⑹菃螀?shù)Int類型,無返回值

看這里
fun getResult() {
println("經(jīng)過一系列耗時(shí)運(yùn)算獲得結(jié)果")
var sum = 200
listen.invoke(sum)
}
其中l(wèi)isten.invoke(sum)就是將計(jì)算結(jié)果sum傳入listen函數(shù)

在activity中設(shè)置傳入一個(gè)((Int) -> Unit類型的函數(shù)就可以監(jiān)聽到計(jì)算結(jié)果

mathUtlils.setListen {println("計(jì)算的結(jié)果 $it")}

那么多參數(shù)回調(diào)怎么寫?

private lateinit var saveListen: ((Boolean, File) -> Unit)fun setListen(saveListen: ((Boolean, File) -> Unit)) {this.saveListen = saveListen} ImageSaver.setListen { boolean, file ->}

看懂了吧,在括號中增加想要的參數(shù)類型即可。 熟能生巧,敲起來就明白是怎么一回事啦。 Kotlin的回調(diào)運(yùn)用的就是函數(shù)思維模式,慢慢習(xí)慣他,代碼會(huì)更加的簡潔優(yōu)雅。

總結(jié)

以上是生活随笔為你收集整理的Kotlin中的接口回调的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。