scala-基础之apply用法-06

创建:UsageOfApply.scala

scala-基础之apply用法-06

package org.victor.scala.base

/**
  * Company: Huazhong University of science and technology
  * 华中科技大学电气学院聚变与等离子体研究所
  * Version: V1.0
  * Author: Victor
  * Contact: [email protected]  2018--2020
  * Software: IntelliJ IDEA
  * File: UsageOfApply
  * Time: 2018/10/12 21:53
  * Desc:apply的使用
  **/
class UsageOfApply {

}

//做过Java开发都知道 main方法中的对象都是静态的,而scala object对象的方法都是静态方法

class ApplyTest{
  def test={
    println("ApplyTest-->Test.....")

    //Class中也可以有apply方法,其使用方法如下所示:
    def apply()= "the apply() is in class"
  }
}

object ApplyTest{

  var count = 0

  //看apply如何使用
  def apply(): ApplyTest = new ApplyTest

  def static={
    println("ApplyTest-->static......")
  }


  //由于 object中的方法和属性都是静态的,所以就是单例对象的理想载体了,示例代码如下:
  def increment: Unit ={
    count = count +1
    print(count+"  ")
  }

}


//App内部帮我们实现了main方法并管理工程师写的代码
object UsageOfApply extends App {
  ApplyTest.static

  //当 val applyTest = new ApplyTest() 会导致apply方法的调用并返回该方法调用的值,
  // 也就是ApplyTest的实例化对象
  val applyTest = new ApplyTest()
  applyTest.test

  //检测单例模式
  for(i <-1 to 100){
    ApplyTest.increment
  }
  println()
  println("ApplyTest.count="+ApplyTest.count)

}

object本身就是一个单例对象

=================================================================

结果:

scala-基础之apply用法-06