apply方法

class ApplyOperation {
}
class ApplyTest{
  def apply() = println("I am into spark so much!!!")//定义的是普通对象的apply方法
  def haveATry: Unit ={
    println("have a try on apply")
  }
}
object ApplyTest{
  def apply() = {
    println("I  am into Scala so much")
    new ApplyTest
  }
}
object ApplyOperation{
  def main (args: Array[String]) {
    val array= Array(1,2,3,4)
    val a = ApplyTest() //这里就是object中apply的使用

    a.haveATry
    a() // 这里就是 class 中 apply的使用
  }
}

可以这样简单地理解单例对象的apply方法和非单例对象的apply方法;

通过单例对象名加括号的方式,可以调用单例对象的apply方法;

通过普通对象名加括号的方式,可以调用普通对象的apply方法;

通过改进代码进一步验证这个结论:

def main (args: Array[String]) {
    val array= Array(1,2,3,4)
    val a = ApplyTest() //这里就是使用object 的使用

    a.haveATry
    a() // 这里就是 class 中 apply使用

    val b = new ApplyTest
    b()

多打印出一行:I am into spark so much.

猜你喜欢

转载自www.cnblogs.com/chxyshaodiao/p/12420320.html