類和對象之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特質
多線程

相關文章
相關標籤/搜索