6
votes

I want to get java.lang.Class for Scala package object:

app/package.scala:

package object app {
}

app/Main.scala:

package app

object Main extends App {
  val _ = app.getClass
}

Compilation fails with:

object getClass is not a member of package app Note that app extends Any, not AnyRef. Such types can participate in value classes, but instances cannot appear in singleton types or in reference comparisons.

2

2 Answers

3
votes

You can define method inside app returning class:

package object app {
  def cls = getClass
}
2
votes

Thanks to Nyavro for the answer.

It seems that package object restricts access to its built-in member from outside and to get full access to package object as to plain object we can do following:

package object app {
  val instance = this
}

and use it like:

app.instance.getClass