kotlin中object:的用法和場(chǎng)景分析
在Kotlin中,object: 用于聲明匿名對(duì)象(Anonymous Object),這是實(shí)現(xiàn)接口或繼承類(lèi)的輕量級(jí)方式,無(wú)需顯式定義具名類(lèi)。以下是核心用法和場(chǎng)景:
1. 基本語(yǔ)法
val obj = object : SomeInterface { // 實(shí)現(xiàn)接口
override fun method() { ... }
}
val obj2 = object : SomeClass() { // 繼承類(lèi)
override fun method() { ... }
}2. 典型用途
(1) 實(shí)現(xiàn)接口/抽象類(lèi)的臨時(shí)實(shí)例
interface ClickListener {
fun onClick()
}
button.setOnClickListener(object : ClickListener {
override fun onClick() {
println("Button clicked")
}
})(2) 重寫(xiě)類(lèi)方法(類(lèi)似Java匿名內(nèi)部類(lèi))
val thread = object : Thread() {
override fun run() {
println("Running in anonymous Thread")
}
}
thread.start()(3) 作為表達(dá)式返回值
fun createAdder(x: Int) = object {
fun add(y: Int) = x + y
}
val adder = createAdder(5)
println(adder.add(3)) // 輸出 83. 與伴生對(duì)象(companion object)的區(qū)別
| 特性 | object:(匿名對(duì)象) | companion object |
| 作用域 | 臨時(shí)單例(無(wú)類(lèi)名) | 類(lèi)內(nèi)部的靜態(tài)單例 |
| 生命周期 | 隨引用結(jié)束而回收 | 伴隨類(lèi)加載存在 |
| 典型場(chǎng)景 | 回調(diào)、臨時(shí)實(shí)現(xiàn) | 工廠(chǎng)方法、類(lèi)級(jí)常量 |
4. 注意事項(xiàng)
- 匿名對(duì)象非單例:每次調(diào)用
object:會(huì)創(chuàng)建新實(shí)例。 - 訪(fǎng)問(wèn)外部變量:可直接修改捕獲的局部變量(與Java不同):
fun countClicks(button: Button): Int {
var clicks = 0
button.setOnClickListener(object : ClickListener {
override fun onClick() {
clicks++ // 直接修改外部變量
}
})
return clicks
}5. 實(shí)際應(yīng)用場(chǎng)景
- Android點(diǎn)擊事件(替代Java匿名內(nèi)部類(lèi))
- 快速實(shí)現(xiàn)回調(diào)接口
- 單元測(cè)試中的模擬對(duì)象(Mock)
到此這篇關(guān)于kotlin中object:的用法的文章就介紹到這了,更多相關(guān)kotlin object:用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析Android手機(jī)衛(wèi)士接收短信指令執(zhí)行相應(yīng)操作
通過(guò)廣播接收者,接收到短信,對(duì)短信內(nèi)容進(jìn)行判斷,如果為我們指定的值就執(zhí)行相應(yīng)的操作。本文給大家介紹Android手機(jī)衛(wèi)士接收短信指令執(zhí)行相應(yīng)操作,感興趣的朋友參考下吧2016-04-04
Android studio實(shí)現(xiàn)左右滑動(dòng)切換圖片
這篇文章主要為大家詳細(xì)介紹了Android studio實(shí)現(xiàn)左右滑動(dòng)切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android依據(jù)名字通過(guò)反射獲取在drawable中的圖片
依據(jù)圖片的名字,通過(guò)反射獲取其在drawable中的ID,在根據(jù)此ID顯示圖片,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06
Android權(quán)限操作之uses-permission詳解
這篇文章主要介紹了Android權(quán)限操作之uses-permission,較為詳細(xì)的分析了uses-permission常見(jiàn)權(quán)限操作類(lèi)型與功能,需要的朋友可以參考下2016-10-10
Android仿打開(kāi)微信紅包動(dòng)畫(huà)效果實(shí)現(xiàn)代碼
這篇文章主要介紹了Android仿打開(kāi)微信紅包動(dòng)畫(huà)效果實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12
Android實(shí)現(xiàn)定時(shí)任務(wù)及鬧鐘
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)定時(shí)任務(wù)及鬧鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06

