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