Kotlin 關鍵字 object 的用法
最新
09-02
問題:在 Java 中會經常使用單例對象,有時候還要求單例對象是線程安全的,創建單例對象需要編寫不少代碼。
那麼, Kotlin 中是如何創建單例對象的呢? 答案是 關鍵字。
object 關鍵字
Kotlin 使用 來創建類,使用 來創建單例對象。下面是一個最簡單的單例對象和使用單例對象的例子:
抽象類或者介面實現單例
也可以實現一個介面或者成為父類的子類,這樣創建的對象就是實現了某個介面的單例對象了。比如:
上面類似於 Java 中的匿名內部類。
當然也可以定義帶有名字的單例:
伴生對象(Companion Object)
當我們想把 作為靜態變數暴露給其他地方使用的時候,需要使用伴生對象了,如下:
關於上面代碼的幾點說明:
由於 Application 是系統來創建的,所以我們沒法直接把該對象變成一個單例
如果像把 Application 示例通過靜態方法暴露出去,則需要使用 ,類似於 Java 中的靜態變數
在伴生對象中定義了一個 變數, 變數是稍後初始化的 App 類型的對象,由於位於 伴生對象 中,所以是個單例,等價於 Java 中的靜態變數定義
在 中給 變數賦值為 當前 的 App 對象
注意伴生對象中的 定義,默認情況下 Kotlin 中的 Field 都自動帶有一個公開的賦值和讀取函數,類似於 Java bean 中的 和 函數。上面的 重新定義了 函數為 私有類型的,這樣在其他地方就只能讀取 變數而無法修改這個變數,防止該變數被其他人修改從而實現單例的目的。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:雲在千峰 |