在Java中,如果不想讓外部通過類的構造方法來創建實例對象的話(單例模式中經常見),一般會將構造方法聲明爲private
:
class A {
...
private A(){
}
...
}
那麼在kotlin中怎麼寫呢,其實道理是一樣的,都是私有化構造方法,只不過寫法有一些變化:
class A private constructor() {
...
companion object {
fun getInstance(): A {
return A()
}
}
...
}
首先,我們將構造函數constructor
聲明爲私有的,這樣外部就無法通過構造函數來創建實例對象,那萬一需要呢?這裏可以使用伴生對象
來實現,它包裹的其實就相當於以前在Java中用static
生命的靜態變量以及靜態方法。如果外部需要創建實例對象的話,直接調用:
var a = A.getInstance()