Код будет вызываться при первом обращении к 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$")
подойдет.