scala 中伴生类与伴生对象在java中还是没有的,这里简单理解下。
/**
* class是object伴生类
* object是class的伴生对象
*两者互为伴生
*/
class ApplyTestDemo{}
object ApplyTestDemo{}
实践说明:
//
object ApplyTestDemo{
println("进入 伴生对象中...")
// 一般情况下object的apply方法的作用是完成new class
def apply(): ApplyTestDemo = {
println("进入伴生对象的 apply 方法中")
new ApplyTestDemo()
}
def sth(): Unit ={
println("enter Object sth 方法")
}
println("离开 伴生对象方法中...")
}
class ApplyTestDemo{
println("进入 伴生类中...")
def apply() : ApplyTestDemo = {
println("进入伴生类的 apply 的方法")
new ApplyTestDemo()
}
println("离开 伴生类中...")
}
object ScalaApply {
def main(args: Array[String]): Unit = {
val applyObjectTest = ApplyTestDemo()// 类名(),先把整个伴生对象都扫一遍,在进入apply方法
ApplyTestDemo.sth()//伴生对象中的方法调用直接就是 类名.方法名 即可,不需要new
println(applyObjectTest)
/*val applyClassTest = new ApplyTestDemo()
println(applyClassTest)*/
}
}
运行结果:先扫一遍伴生对象的所有方法,然后进入apply方法中,new Class(),进入伴生类中,
总结:
类名() ==> Object apply
new Class() ==> Class apply