2010-04-28 41 views

回答

12

當第一次訪問O(某些方法或某個屬性)時,將調用該代碼。例如,下面的程序

object O { 
    println("Hello from O") 
    def doSome() {} 
} 

object App extends Application { 
    println("Before O") 
    O.doSome() 
    println("After O") 
} 

將產生

Before O 
Hello From O 
After O 

這是不夠的,簡單定義O。由於編譯對象的名稱是O$,因此調用將會執行,因此它不會工作以致電Class.forName("O")

+1

關於'的Class.forName(「O」)',只有將無法正常工作,因爲'對象O'類的名字實際上是'」 Ø$「'。如果你調用'java.lang.Class.forName(「O $」)',它確實會執行初始化塊。 – 2010-04-28 13:00:13

+0

謝謝,我修正了這個問題。 – 2010-04-28 13:04:43

+0

非常好。這就是我所希望的。 – 2010-04-28 15:09:44