Scala單例和伴生對象
單例(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伴生對象
在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.