Scala package object constructor
scala
Solution
The package object is translated into a normal java class file called package.class IIRC. From then on I assume it behaves like any normal Java class, thus it is loaded and instantiated when it is first referenced. In Scala, that means you need to define some method or `val` in the package object, then access it from outside. In your case, you may try calling it from the constructor of `Classy`, or from the code which instantiates `Classy`.
Update
OK, here is some code I ran to test what I described above:
// package.scala
package some
package object pkg {
println("package created!")
def func() { println("func called") }
}
// C.scala
package some.pkg
class C {
println("created C")
}
// G.scala
package some.pkg
object G {
println("creating G")
func()
println("created G")
}
// PackageTester.scala
package some.pkg
object PackageTester extends App {
val c = new C
val g = G
}
And the output is:
created C
creating G
package created!
func called
created G
Which proves that Scala package objects are created lazily, only when they are actually referenced. And in fact the same is true for "normal" Scala objects, as demonstrated by `G` above.
Problem
When and how is the Scala Package object constructor called? I have two classes: Package.scala ``` package my; package object entities { //Some initialization code in constructor } ``` Classy.scala ``` package my.entities; case class Classy { } ``` I am trying to have the entities constructor to have already been executed by the time an object of Classy is created.