美文网首页
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