Reputation: 25846
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
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
Reputation: 8866
You can define method inside app returning class:
package object app {
def cls = getClass
}
Upvotes: 3