Scala單例物件、伴生物件

541732025發表於2015-11-15
在Scala中,沒有靜態成員、靜態方法這一說,但是object可以做到類似效果:

點選(此處)摺疊或開啟

  1. object University{
  2.   private var studentNo = 0
  3.   def newStudenNo = {
  4.     studentNo += 1
  5.     studentNo
  6.   }
  7. }

點選(此處)摺疊或開啟

  1. object ObjecOps {
  2.   def main(args: Array[String]): Unit = {
  3.     println(University.newStudenNo) //第一次呼叫時,初始化成員變數
  4.     println(University.newStudenNo)
  5.   }
  6. }
結果:1、2

點選(此處)摺疊或開啟

  1. class University{
  2.   val id = University.newStudenNo //可以訪問伴生物件的任何成員,即使是private
  3.   private var number =0
  4.   def aClass(number:Int){this.number += number}
  5. }

如果,同時存在一個class University,那麼這個類叫做伴生類,相應地,這個物件叫做伴生物件。
這個機制很有用,伴生物件可以做一些靜態化的初始化工作,如在spark中,可以經常看到這樣的用法。
如果是伴生物件,這個類可以訪問這個物件的任何成員(即使是private)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1839506/,如需轉載,請註明出處,否則將追究法律責任。

相關文章