类和对象之Application特质

Scala提供了特质scala.Application,可以减少一些输入工作。尽管现在所学的知识还不足以弄懂它的工作原理,不过我们认为了解一下还是有必要的。如例:

package scalaTest
object Test5 extends Application {
    println("eeeee")
}

使用方法是,首先在单例对象名后写上“extends Application”。然后代之以main方法,你可以把想要执行的代码直接放在单例对象的花括号之间。如此而已,之后可以正常的编译和运行。
能这么做,是因为特质Application声明了带有合适签名的main方法,并被你写的单例对象继承,使它可以像scala程序那样。花括号之间的代码被收集进了单例对象的主构造器,并在类被初始化时执行
继承自Application比编写完整的main方法要方便,不过它也有些缺点。首先,如果想访问命令行参数的话就不能用它,因为args数组不可访问(因为代码在主构造器中执行的??)。
第二,因为某些JVM线程模型里的局限,如对于多线程的程序需要自行编写main方法。最后,某些JVM的实现没有优化被Application特质执行的对象的初始化代码。因此只有当程序相对简单并且是单线程的情况下才可以继承Application特质

你可能感兴趣的:(scala)