/**
* 匿名內(nèi)部類
* 1.kotlin中的匿名內(nèi)部類可以用 object:接口名或類名 的形式實(shí)現(xiàn)
* 2.匿名內(nèi)部類可以繼承一個(gè)類雪侥,實(shí)現(xiàn)多個(gè)接口
* 3.匿名內(nèi)部類并不是真的沒有名字,在編譯的時(shí)候會(huì)有其對(duì)應(yīng)的id跋涣,可通過(guò)反射獲取
*/
interface OnClickListener { //點(diǎn)擊監(jiān)聽器接口
fun onClick() //點(diǎn)擊事件
}
class View { //視圖類
var onClickListener: OnClickListener? = null
}
open class Appear
fun main(args: Array<String>) {
val view = View() //新建一個(gè)視圖
view.onClickListener = object : OnClickListener { //此處的object就是匿名內(nèi)部類
override fun onClick() { //點(diǎn)擊事件
println("click one")
}
}
(view.onClickListener as OnClickListener).onClick() //as關(guān)鍵詞表示類型轉(zhuǎn)換
//匿名內(nèi)部類可以繼承一個(gè)類许师,實(shí)現(xiàn)多個(gè)接口
view.onClickListener = object : Appear(), OnClickListener {
override fun onClick() { //點(diǎn)擊事件
println("click two")
}
}
(view.onClickListener as OnClickListener).onClick() //進(jìn)行點(diǎn)擊
}
運(yùn)行結(jié)果