我的Kotlin 學(xué)習(xí)之路(三)Kotlin之回調(diào)監(jiān)聽

kotlin的回調(diào)與java在寫法上略有不同颗品,直接上代碼
(為了好理解趾徽,我先按java寫法,不用Lambda)

1惨远、生成Person類及MyInterface 接口

class Person {
    val name:String = "Person"
    lateinit var mListen: MyInterface //接口可以延時(shí)加載

    fun setListeren(listen: MyInterface){
        this.mListen = listen
        this.mListen?.poo(" poo :" +name)       
    }
    
    interface MyInterface {
        fun poo(str: String)  
    }
}

2谜悟、在Main或Activity中回調(diào)

fun main(args: Array<String>) {
    println("Hello, world!") 
    var person = Person()
    person.setListeren(object : Person.MyInterface {//object的作用是調(diào)用內(nèi)部匿名類
        override fun poo(str:String) {
            println(str)
        }
     })   
}

3、打印結(jié)果
Hello, world!
poo :Person

以上是用原java寫法來(lái)實(shí)現(xiàn)kotlin回調(diào)的北秽,目的是從java轉(zhuǎn)來(lái)的人好理解

那么重點(diǎn)在下面
我們剛才只是用java的習(xí)慣來(lái)實(shí)現(xiàn)了kotlin語(yǔ)言的回調(diào)葡幸,那么拋開java習(xí)慣,用kotlin習(xí)慣應(yīng)該怎么寫呢贺氓?

先認(rèn)識(shí)一個(gè)概念
函數(shù) : 一個(gè)單方法的接口

再上代碼蔚叨,看看kotlin是如何簡(jiǎn)化java代碼的

class Person {
    val name:String = "Person"
    lateinit var mListen: (String) -> Unit // 聲明mListen是一個(gè)函數(shù)(單方法接口),入?yún)tring,無(wú)返回值

    fun setListeren(listener: (String) -> Unit){
        this.mListen = listener
        this.mListen("invoke :" +name) //等于 mListen?.invoke("invoke :" +name)  X()等同于X.invoke()
           
    }
   
    //不再需要聲明接口類辙培!
}

fun main(args: Array<String>) {
    println("Hello, world!") 
    var person = Person()
    person.setListeren{ println(it) }  // 只有一個(gè)參數(shù)的簡(jiǎn)化結(jié)果 it代表入?yún)?String類 
}

打印結(jié)果
Hello, world!
invoke :Person

這就是kt語(yǔ)言蔑水!函數(shù)思維模式,不同于java扬蕊,慢慢習(xí)慣就好了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肤粱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子厨相,更是在濱河造成了極大的恐慌领曼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛮穿,死亡現(xiàn)場(chǎng)離奇詭異庶骄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)践磅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門单刁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事羔飞》握粒” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵逻淌,是天一觀的道長(zhǎng)么伯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)卡儒,這世上最難降的妖魔是什么田柔? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮骨望,結(jié)果婚禮上硬爆,老公的妹妹穿的比我還像新娘。我一直安慰自己擎鸠,他們只是感情好缀磕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劣光,像睡著了一般袜蚕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赎线,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天廷没,我揣著相機(jī)與錄音糊饱,去河邊找鬼垂寥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛另锋,可吹牛的內(nèi)容都是我干的滞项。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼夭坪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼文判!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起室梅,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤戏仓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亡鼠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赏殃,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年间涵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仁热。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勾哩,死狀恐怖抗蠢,靈堂內(nèi)的尸體忽然破棺而出举哟,到底是詐尸還是另有隱情,我是刑警寧澤迅矛,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布妨猩,位于F島的核電站,受9級(jí)特大地震影響诬乞,放射性物質(zhì)發(fā)生泄漏册赛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一震嫉、第九天 我趴在偏房一處隱蔽的房頂上張望森瘪。 院中可真熱鬧,春花似錦票堵、人聲如沸扼睬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窗宇。三九已至,卻和暖如春特纤,著一層夾襖步出監(jiān)牢的瞬間军俊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工捧存, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粪躬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓昔穴,卻偏偏與公主長(zhǎng)得像镰官,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吗货,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容