2010-04-28 2 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. Также не будет работать, чтобы вызвать Class.forName("O"), так как имя скомпилированного объекта равно O$, поэтому вызовите Class.forName("O$").

+1

Относно 'Class.forName («O»)', что только не будет работать, так как имя класса для объекта 'O' на самом деле'» O $ "'. Если вы вызываете 'java.lang.Class.forName (" O $ ")', он действительно выполнит блок инициализации. –

+0

Спасибо, я исправил это. –

+0

Очень хорошо. Это то, на что я надеялся. –