apply方法类似于java中类的初始化,在 Object(参数1,参数2,... ,)时会自动调用apply方法,无需使用new 关键字。
scala中的apply方法会出现在两个地方: 一是伴生对象,另一是类。
一 伴生对象中的apply方法
当对象以函数的方式进行调用(直接在单例对象后面添加参数)时,scala会隐式地将调用改为在该对象上调用apply方法。例如XX("hello")实际调用的是XX.apply("hello")。因此,apply方法又被称为注入方法。apply方法常用语创建类实例的工厂方法。
object Greeting {
def apply(name: String) = "hello" + name
}
Greeting("scala")实际上是Greeting.apply("scala")
二 class 或 trait 中的apply方法
调用class()时,会自动调用class中的apply方法。