單例(Singleton)物件是一個通過使用object
關鍵字而不是使用class
關鍵字宣告的物件。其它物件不需要呼叫在單例物件中宣告的方法。
在scala中,沒有靜態的概念。 所以scala建立一個單例物件來為程式的執行提供入口點。
如果不建立單例物件,程式碼也會成功編譯,但不會產生任何輸出。單例物件中宣告的方法可以全域性存取。單例物件可以擴充套件類和性狀。
Scala單例物件範例
object Singleton{
def main(args:Array[String]){
SingletonObject.hello() // No need to create object.
}
}
object SingletonObject{
def hello(){
println("Hello, This is Singleton Object")
}
}
將上面程式碼儲存到原始檔:Demo.scala中,使用以下命令編譯並執行程式碼 -
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
Hello, This is Singleton Object
在scala中,當有一個與單例(singleton)物件同名的類時,它被稱為伴生(companion)類,單例(singleton)物件呼叫伴生物件。
伴生類及其伴隨物件必須在同一個原始檔中定義。
Scala伴生物件範例
class ComapanionClass{
def hello(){
println("Hello, this is Companion Class.")
}
}
object Demo{
def main(args:Array[String]){
new ComapanionClass().hello()
println("And this is Companion Object.")
}
}
將上面程式碼儲存到原始檔:Demo.scala中,使用以下命令編譯並執行程式碼 -
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
Hello, this is Companion Class.
And this is Companion Object.