在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
來做到一樣的事情。