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.