iT邦幫忙

0

Kotlin - 什麼時候會用上private constructor

  • 分享至 

  • xImage
  •  

在kotlin中提供一個private constructor的功能,但你會問說,如果constructor無法使用,那怎麼宣告? 當然這是有特殊用途的,譬如你有一個class,希望他透過指定的Builder或者特殊的static member來進行產生的時候

class ViewManager private constructor(engine: Engine) { 
    // do something
}

於是乎就會加上

class ViewManager private constructor(engine: Engine) { 
    // do something
    
    fun hello(){ ... }
    
    companion object {
        private lateinit var instance: ViewManager

        fun create(engine: Engine,data: Int): ViewManager {
            if(!::instance.isInitialized) {
                // if data ....
                instance = ViewManager(engine)
            }
            return instance
        }
    }
}

變成強制必須這樣呼叫

ViewManager.create(engine).hello()

大概會是這樣使用,在這邊主要就是希望透過create來取得與建立同一個實例,外部無法有任何其他方法自己另外建立實例,當然如果你是沒有參數的物件,可以直接透過object來做到一樣的事情。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言