美文网首页
Scala单例对象、伴生对象

Scala单例对象、伴生对象

作者: 田真的架构人生 | 来源:发表于2017-08-01 21:37 被阅读0次

在Scala中,没有静态成员、静态方法这一说,但是object可以做到类似效果:

object University{
  private var studentNo = 0
  def newStudenNo = {
    studentNo += 1
    studentNo
  }
}
object ObjecOps {
  def main(args: Array[String]): Unit = {
    println(University.newStudenNo) //第一次调用时,初始化成员变量
    println(University.newStudenNo) 
  }
}

结果:1、2

class University{
  val id = University.newStudenNo //可以访问伴生对象的任何成员,即使是private
  private var number =0
  def aClass(number:Int){this.number += number}
}

如果,同时存在一个class University,那么这个类叫做伴生类,相应地,这个对象叫做伴生对象。
这个机制很有用,伴生对象可以做一些静态化的初始化工作,如在spark中,可以经常看到这样的用法。
如果是伴生对象,这个类可以访问这个对象的任何成员(即使是private)

相关文章

网友评论

      本文标题:Scala单例对象、伴生对象

      本文链接:https://www.haomeiwen.com/subject/pcyslxtx.html