在scala中,scala不使用new关键字创建对象实例,一般有2中方法:
1. 为类创建伴生对象,并在伴生对象内按照所需的构造函数签名定义一个apply方法;
2.将类定义为case类。
1)用apply方法创建一个伴生对象:
class ApplyOperation {
}
class ApplyTest{
def apply() = println("I am into spark so much!!!")
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 的使用
a.haveATry
a() // 这里就是 class 中 apply使用
}
}
运行结果
I am into Scala so much
have a try on apply
I am into spark so much!!!
object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例
2)将类声明为case类case class Person(var :String)
case的作用在于它在伴生对象生成了一个apply对象,更重要的是,case类生成的代码远不止apply方法。apply实际上是一个工厂方法。