mixel
mixel

Reputation: 25846

Scala package object getClass

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.

Upvotes: 6

Views: 848

Answers (2)

mixel
mixel

Reputation: 25846

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

Upvotes: 2

Nyavro
Nyavro

Reputation: 8866

You can define method inside app returning class:

package object app {
  def cls = getClass
}

Upvotes: 3

Related Questions